如何在 Azure VM 上重置本地 Linux 密码

本文提供了三种方法来重置本地 Linux 虚拟机 (VM) 密码。 如果用户帐户已过期或想要创建新帐户,可以使用以下方法创建新的本地管理员帐户并重新获得对 VM 的访问权限。

使用 Azure Linux 代理重置密码

无需将 OS 磁盘附加到另一个 VM 即可重置密码。 此方法要求在受影响的 VM 上安装 Azure Linux 代理

  1. 确保 Azure Linux 代理 (waagent) 服务在受影响的 VM 上运行,并在Azure 门户处于就绪状态。

  2. 设置环境变量,并使用 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
    
  3. 尝试访问 VM。

若要更新 SSH 密钥,请参阅 通过 Azure CLI 使用 VMAccess 扩展管理管理用户 SSH

还可以使用Azure 门户中的“重置密码”功能重置密码或 SSH 密钥。

有关详细信息,请参阅 适用于 Linux 的 vmaccess 扩展

使用单用户模式的串行控制台重置密码

可以使用 串行控制台 通过单用户模式重置 admin userroot 帐户,以便进行 VM 访问。

  1. 按照 单用户模式 过程重置或添加密码。

  2. 如果尝试使用 SSH 和密码身份验证登录到服务器,请确保在 OpenSSH 服务器上启用密码身份验证。

    1. 通过运行以下命令, PasswordAuthentitcation 检查该值是设置为 yes 还是 no 设置为 in /etc/ssh/sshd_config

      egrep "^PasswordAuthentication" /etc/ssh/sshd_config
      
    2. 如果值 PasswordAuthentication 设置为 no,请使用 文本编辑器(如 vinano )将值更改为 yes

  3. 通过运行 passwd 命令为 admin userroot 帐户创建新密码:

    passwd <admin_user>
    
  4. 运行以下命令,检查是否 SElinux 处于 enforcing 模式 /etc/sysconfig/selinux

    cat /etc/sysconfig/selinux
    
  5. 如果 SElinux 处于 enforcing 模式,请确保允许 SElinux 使用 passwd 命令进行文件更改。 更改密码后,可以运行以下命令来重新标记文件系统,以便加载更改。

    touch /.autorelabel
    
  6. 运行以下命令,重新启动 VM:

    /usr/sbin/reboot -f
    
  7. 尝试访问 VM。

使用修复 VM 重置密码

此方法已使用 支持的 Linux 分发版和版本进行了测试。

注意

如果遇到影响 Azure 网络虚拟设备的问题,此方法不适用于你的情况。 相反,必须联系网络虚拟设备的供应商,以获取有关如何安全进行密码重置的说明。

可以运行 vm 修复 命令,以创建附加了受影响 VM OS 磁盘副本的修复 VM。 然后,通过 chroot 环境将 OS 文件系统的副本装载到修复 VM 上。

注意

或者,使用 Azure 门户手动创建救援 VM。 有关详细信息,请参阅使用 Azure 门户将 OS 磁盘附加到恢复 VM,对 Linux VM 进行故障排除

  1. 运行以下 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
    
  2. 登录到修复 VM 并 排查 chroot 环境问题

  3. 如果尝试使用 SSH 和密码身份验证登录到服务器,请确保在 OpenSSH 服务器上启用密码身份验证。

    1. 通过运行以下命令, PasswordAuthentitcation 检查该值是设置为 yes 还是 no 设置为 in /etc/ssh/sshd_config

      egrep "^PasswordAuthentication" /etc/ssh/sshd_config
      
    2. 如果值 PasswordAuthentication 设置为 no,请使用 文本编辑器(如 vinano )将值更改为 yes

  4. 通过运行 passwd 命令为 admin userroot 帐户创建新密码:

    passwd <admin_user>
    
  5. 运行以下命令,检查是否 SElinux 处于 enforcing 模式 /etc/sysconfig/selinux

    cat /etc/sysconfig/selinux
    
  6. 如果 SElinux 处于 enforcing 模式,请确保允许 SElinux 使用 passwd 命令进行文件更改。 更改密码后,可以运行以下命令来重新标记文件系统,以便加载更改。

    touch /.autorelabel
    
  7. 退出 chroot 环境

  8. 使用以下命令交换 OS 磁盘,将 OS 磁盘重新装载到受影响的 VM:

    az vm repair restore -g $AZ_RESOURCE_GROUP -n $AZ_VM_NAME --verbose
    
  9. 尝试访问 VM。

后续步骤

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。