如何在 Azure VM 上重置本地 Linux 密码
本文提供了三种方法来重置本地 Linux 虚拟机 (VM) 密码。 如果用户帐户已过期或想要创建新帐户,可以使用以下方法创建新的本地管理员帐户并重新获得对 VM 的访问权限。
使用 Azure Linux 代理重置密码
无需将 OS 磁盘附加到另一个 VM 即可重置密码。 此方法要求在受影响的 VM 上安装 Azure Linux 代理 。
确保 Azure Linux 代理 (waagent) 服务在受影响的 VM 上运行,并在Azure 门户处于就绪状态。
设置环境变量,并使用 Azure CLI 或 Azure Cloud Shell进行密码重置:
AZ_RESOURCE_GROUP="YourResourceGroupName" AZ_VM_NAME="VMname" AZ_ADMIN_USER="adminName" AZ_MSADMIN_PASS="newPassword" az vm user update -u $AZ_ADMIN_USER -p $AZ_MSADMIN_PASS -g $AZ_RESOURCE_GROUP -n $AZ_VM_NAME
尝试访问 VM。
若要更新 SSH 密钥,请参阅 通过 Azure CLI 使用 VMAccess 扩展管理管理用户 SSH。
还可以使用Azure 门户中的“重置密码”功能重置密码或 SSH 密钥。
有关详细信息,请参阅 适用于 Linux 的 vmaccess 扩展。
使用单用户模式的串行控制台重置密码
可以使用 串行控制台 通过单用户模式重置 admin user
或 root
帐户,以便进行 VM 访问。
按照 单用户模式 过程重置或添加密码。
如果尝试使用 SSH 和密码身份验证登录到服务器,请确保在 OpenSSH 服务器上启用密码身份验证。
通过运行以下命令,
PasswordAuthentitcation
检查该值是设置为yes
还是no
设置为 in/etc/ssh/sshd_config
:egrep "^PasswordAuthentication" /etc/ssh/sshd_config
如果值
PasswordAuthentication
设置为no
,请使用 文本编辑器(如vi
或nano
)将值更改为yes
。
通过运行
passwd
命令为admin user
或root
帐户创建新密码:passwd <admin_user>
运行以下命令,检查是否
SElinux
处于enforcing
模式/etc/sysconfig/selinux
:cat /etc/sysconfig/selinux
如果
SElinux
处于enforcing
模式,请确保允许SElinux
使用passwd
命令进行文件更改。 更改密码后,可以运行以下命令来重新标记文件系统,以便加载更改。touch /.autorelabel
运行以下命令,重新启动 VM:
/usr/sbin/reboot -f
尝试访问 VM。
使用修复 VM 重置密码
此方法已使用 支持的 Linux 分发版和版本进行了测试。
注意
如果遇到影响 Azure 网络虚拟设备的问题,此方法不适用于你的情况。 相反,必须联系网络虚拟设备的供应商,以获取有关如何安全进行密码重置的说明。
可以运行 vm 修复 命令,以创建附加了受影响 VM OS 磁盘副本的修复 VM。 然后,通过 chroot 环境将 OS 文件系统的副本装载到修复 VM 上。
注意
或者,使用 Azure 门户手动创建救援 VM。 有关详细信息,请参阅使用 Azure 门户将 OS 磁盘附加到恢复 VM,对 Linux VM 进行故障排除。
运行以下 az vm repair create 命令以创建 OS 磁盘的副本。 然后,磁盘会自动附加到恢复 VM。
AZ_RESOURCE_GROUP="YourResourceGroupName" AZ_VM_NAME="VMname" AZ_ADMIN_USER="userName" AZ_MSADMIN_PASS="newPassword" az vm repair create -g $AZ_RESOURCE_GROUP -n $AZ_VM_NAME --repair-username $AZ_ADMIN_USER --repair-password "$AZ_MSADMIN_PASS" --verbose
登录到修复 VM 并 排查 chroot 环境问题。
如果尝试使用 SSH 和密码身份验证登录到服务器,请确保在 OpenSSH 服务器上启用密码身份验证。
通过运行以下命令,
PasswordAuthentitcation
检查该值是设置为yes
还是no
设置为 in/etc/ssh/sshd_config
:egrep "^PasswordAuthentication" /etc/ssh/sshd_config
如果值
PasswordAuthentication
设置为no
,请使用 文本编辑器(如vi
或nano
)将值更改为yes
。
通过运行
passwd
命令为admin user
或root
帐户创建新密码:passwd <admin_user>
运行以下命令,检查是否
SElinux
处于enforcing
模式/etc/sysconfig/selinux
:cat /etc/sysconfig/selinux
如果
SElinux
处于enforcing
模式,请确保允许SElinux
使用passwd
命令进行文件更改。 更改密码后,可以运行以下命令来重新标记文件系统,以便加载更改。touch /.autorelabel
退出 chroot 环境。
使用以下命令交换 OS 磁盘,将 OS 磁盘重新装载到受影响的 VM:
az vm repair restore -g $AZ_RESOURCE_GROUP -n $AZ_VM_NAME --verbose
尝试访问 VM。
后续步骤
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈