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

适用于:✔️ Linux VM

本文提供了三种方法来重置本地 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 设置为 yesno 传入 /etc/ssh/sshd_config

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

  3. 通过运行以下命令passwdadmin 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,该 VM 具有附加受影响 VM 的 OS 磁盘的副本。 然后,通过 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 设置为 yesno 传入 /etc/ssh/sshd_config

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

  4. 通过运行以下命令passwdadmin 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 反馈社区