适用于:✔️ Linux VM
总结
本文提供了三种方法来重置本地 Linux 虚拟机(VM)密码。 如果用户帐户已过期或想要创建新帐户,则可以使用以下方法创建新的本地管理员帐户并重新获得对 VM 的访问权限。
重要
新功能! 请尝试使用 VM 协助解决首要问题。 建议您运行 Windows 的 VM 辅助 或 Linux 的 VM 辅助。 这些基于脚本的诊断工具可帮助你识别影响Azure VM 来宾代理和整体 VM 运行状况的常见问题。
如果在 VM 上遇到性能问题,请先运行这些工具,然后再联系Microsoft 支持部门。
使用 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 扩展管理管理员用户。
还可以在 Azure 门户中使用 Reset Password 功能重置密码或 SSH 密钥。
有关详细信息,请参阅 适用于 Linux 的 vmaccess 扩展。
使用具有单用户模式的串行控制台重置密码
可以使用 串行控制台 通过单用户模式重置 admin user 或 root 帐户,以便进行 VM 访问。
-
按照单用户模式过程重置或添加密码。
-
如果尝试使用 SSH 和密码身份验证登录到服务器,请确保在 OpenSSH 服务器上启用密码身份验证。
-
运行以下命令,检查是否
PasswordAuthentication值设置为yes或no在/etc/ssh/sshd_config中:egrep "^PasswordAuthentication" /etc/ssh/sshd_config -
如果值
PasswordAuthentication设置为no,请使用文本编辑器,例如vi或nano将值yes更改为 。
-
-
通过运行以下命令
admin user为root或passwd帐户创建新密码:passwd <admin_user> -
通过运行以下命令,检查
SElinux是否在/etc/sysconfig/selinux的enforcing模式下: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 虚拟机。
-
运行以下 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 服务器上启用密码身份验证。
-
运行以下命令,检查
/etc/ssh/sshd_config中的PasswordAuthentication值是否设置为yes或no:egrep "^PasswordAuthentication" /etc/ssh/sshd_config -
如果值
PasswordAuthentication设置为no,请使用文本编辑器,例如vi或nano将值yes更改为 。
-
-
通过运行以下命令
admin user为root或passwd帐户创建新密码:passwd <admin_user> -
在
/etc/sysconfig/selinux中通过运行以下命令检查SElinux是否处于enforcing模式: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。