如何在 Azure VM 上重置本地 Linux 密码
适用于:✔️ Linux VM
本文提供了三种方法来重置本地 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
传入/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,该 VM 具有附加受影响 VM 的 OS 磁盘的副本。 然后,通过 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
传入/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
使用以下命令交换 OS 磁盘,将 OS 磁盘重新装载到受影响的 VM:
az vm repair restore -g $AZ_RESOURCE_GROUP -n $AZ_VM_NAME --verbose
尝试访问 VM。
后续步骤
Troubleshoot Azure VM by attaching OS disk to another Azure VM(通过将 OS 磁盘附加到另一个 Azure VM 对 Azure VM 进行故障排除)
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区。