使用 VMAccess 扩展和 Azure CLI 来管理管理用户、SSH,并检查或修复 Linux VM 上的磁盘
VMAccess 扩展和 Azure CLI 让你可以管理管理用户并重置对 Linux VM 的访问权限。
本文介绍如何:
- 使用 Azure VMAccess 扩展检查或修复磁盘。
- 重置用户访问权限。
- 管理管理用户帐户
- 更新作为 Azure 资源管理器虚拟机运行的 Linux 计算机上的 SSH 配置。
如果需要管理经典虚拟机,请参阅使用 VMAccess 扩展。
注意
如果你在安装 Microsoft Entra 登录扩展后使用 VMAccess 扩展重置 VM 的密码,请重新运行 Microsoft Entra 登录扩展,为 VM 重新启用 Azure AD 登录。
先决条件
VMAccess 扩展可以在以下 Linux 发行版上运行:
支持的 Linux 发行版
Linux 发行版 | x64 | ARM64 |
---|---|---|
Alma Linux | 9.x+ | 9.x+ |
CentOS | 7.x+、8.x+ | 7.x+ |
Debian | 10+ | 11.x+ |
Azure Linux | 2.x | 2.x |
OpenSUSE | 12.3+ | 不支持 |
Rocky Linux | 9.x+ | 9.x+ |
SLES | 12.x+、15.x+ | 15.x SP4+ |
Ubuntu | 18.04+、20.04+、22.04+ | 20.04+、22.04+ |
使用 VMAccess 扩展的方法
可以通过两种方式在 Linux VM 上使用 VMAccess 扩展:
- 使用 Azure CLI 以及所需的参数。
- 使用 JSON 文件和 VMAccess 扩展。
下面的示例使用 az vm user 命令。 若要执行这些步骤,需要安装最新的 Azure CLI,并使用 az login 登录到 Azure 帐户。
更新 SSH 密钥
以下示例更新名为 myVM
的 VM 上用户 azureuser
的 SSH 密钥:
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username azureuser \
--ssh-key-value ~/.ssh/id_rsa.pub
注意
az vm user update
命令将新公钥文本追加到 VM 上管理员用户的 ~/.ssh/authorized_keys
文件。 此命令不会替换或删除任何现有的 SSH 密钥。 此命令不会使用 VMAccess 扩展删除部署时设置的先前密钥或后续更新。
重置密码
以下示例重置名为 myVM
的 VM 上用户 azureuser
的密码:
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username azureuser \
--password myNewPassword
重启 SSH
下面的示例将在名为 myVM
的 VM 上重启 SSH 守护程序,并将 SSH 配置重置为默认值:
az vm user reset-ssh \
--resource-group myResourceGroup \
--name myVM
创建管理员/sudo 用户
以下示例创建名为 myNewUser
、具有 sudo 权限的用户 。 此帐户使用 SSH 密钥在名为 myVM
的 VM 上进行身份验证。 丢失或忘记当前凭据时,此方法有助于重新获取对 VM 的访问权限。 作为最佳做法,应限制具有 sudo 权限的帐户 。
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username myNewUser \
--ssh-key-value ~/.ssh/id_rsa.pub
删除用户
以下示例将删除名为 myVM
的 VM 上名为 myNewUser
的用户:
az vm user delete \
--resource-group myResourceGroup \
--name myVM \
--username myNewUser
使用 JSON 文件和 VMAccess 扩展
以下示例使用原始 JSON 文件。 然后使用 az vm extension set 命令调用 JSON 文件。 Azure 模板还可以调用这些 JSON 文件。
重置用户访问权限
如果你已失去 Linux VM 的根访问权限,可以启动 VMAccess 脚本更新用户的 SSH 密钥或密码。
若要更新用户的 SSH 公钥,请创建名为 update_ssh_key.json
的文件并添加以下格式的设置。 请将 username
和 ssh_key
替换为自己的信息:
{
"username":"azureuser",
"ssh_key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCZ3S7gGp3rcbKmG2Y4vGZFMuMZCwoUzZNGxxxxxx2XV2x9FfAhy8iGD+lF8UdjFX3t5ebMm6BnnMh8fHwkTRdOt3LDQq8o8ElTBrZaKPxZN2thMZnODs5Hlemb2UX0oRIGRcvWqsd4oJmxsXa/Si98Wa6RHWbc9QZhw80KAcOVhmndZAZAGR+Wq6yslNo5TMOr1/ZyQAook5C4FtcSGn3Y+WczaoGWIxG4ZaWk128g79VIeJcIQqOjPodHvQAhll7qDlItVvBfMOben3GyhYTm7k4YwlEdkONm4yV/UIW0la1rmyztSBQIm9sZmSq44XXgjVmDHNF8UfCZ1ToE4r2SdwTmZv00T2i5faeYnHzxiLPA3Enub7xxxxxxwFArnqad7MO1SY1kLemhX9eFjLWN4mJe56Fu4NiWJkR9APSZQrYeKaqru4KUC68QpVasNJHbuxPSf/PcjF3cjO1+X+4x6L1H5HTPuqUkyZGgDO4ynUHbko4dhlanALcriF7tIfQR9i2r2xOyv5gxJEW/zztGqWma/d4rBoPjnf6tO7rLFHXMt/DVTkAfn5wxxtLDwkn5FMyvThRmex3BDf0gujoI1y6cOWLe9Y5geNX0oj+MXg/W0cXAtzSFocstV1PoVqy883hNoeQZ3mIGB3Q0rIUm5d9MA2bMMt31m1g3Sin6EQ== azureuser@myVM"
}
通过运行以下命令执行 VMAccess 脚本:
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM \
--name VMAccessForLinux \
--publisher Microsoft.OSTCExtensions \
--version 1.4 \
--protected-settings update_ssh_key.json
若要重置用户密码,请创建名为 reset_user_password.json
的文件并添加以下格式的设置。 请将 username
和 password
替换为自己的信息:
{
"username":"azureuser",
"password":"myNewPassword"
}
通过运行以下命令执行 VMAccess 脚本:
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM \
--name VMAccessForLinux \
--publisher Microsoft.OSTCExtensions \
--version 1.4 \
--protected-settings reset_user_password.json
重启 SSH
若要重新启动 SSH 守护程序并将 SSH 配置重置为默认值,请创建名为 reset_sshd.json
的文件。 添加以下文本:
{
"reset_ssh": true
}
结合以下参数执行 VMAccess 脚本:
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM \
--name VMAccessForLinux \
--publisher Microsoft.OSTCExtensions \
--version 1.4 \
--protected-settings reset_sshd.json
管理管理用户
若要创建具有 sudo 权限且使用 SSH 密钥进行身份验证的用户,请创建名为 create_new_user.json
的文件并添加以下格式的设置。 用你自己的值替换 username
和 ssh_key
参数的值。 丢失或忘记当前凭据时,此方法有助于重新获取对 VM 的访问权限。 最佳做法是限制具有 sudo 权限的帐户。
{
"username":"myNewUser",
"ssh_key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCZ3S7gGp3rcbKmG2Y4vGZFMuMZCwoUzZNG1vHY7P2XV2x9FfAhy8iGD+lF8UdjFX3t5ebMm6BnnMh8fHwkTRdOt3LDQq8o8ElTBrZaKPxZN2thMZnODs5Hlemb2UX0oRIGRcvWqsd4oJmxsXa/Si98Wa6RHWbc9QZhw80KAcOVhmndZAZAGR+Wq6yslNo5TMOr1/ZyQAook5C4FtcSGn3Y+WczaoGWIxG4ZaWk128g79VIeJcIQqOjPodHvQAhll7qDlItVvBfMOben3GyhYTm7k4YwlEdkONm4yV/UIW0la1rmyztSBQIm9sZmSq44XXgjVmDHNF8UfCZ1ToE4r2SdwTmZv00T2i5faeYnHzxiLPA3Enub7iUo5IdwFArnqad7MO1SY1kLemhX9eFjLWN4mJe56Fu4NiWJkR9APSZQrYeKaqru4KUC68QpVasNJHbuxPSf/PcjF3cjO1+X+4x6L1H5HTPuqUkyZGgDO4ynUHbko4dhlanALcriF7tIfQR9i2r2xOyv5gxJEW/zztGqWma/d4rBoPjnf6tO7rLFHXMt/DVTkAfn5woYtLDwkn5FMyvThRmex3BDf0gujoI1y6cOWLe9Y5geNX0oj+MXg/W0cXAtzSFocstV1PoVqy883hNoeQZ3mIGB3Q0rIUm5d9MA2bMMt31m1g3Sin6EQ== myNewUser@myVM",
"password":"myNewUserPassword"
}
结合以下参数执行 VMAccess 脚本:
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM \
--name VMAccessForLinux \
--publisher Microsoft.OSTCExtensions \
--version 1.4 \
--protected-settings create_new_user.json
若要删除用户,请创建名为 delete_user.json
的文件并添加以下内容。 将 remove_user
的数据更改为要删除的用户:
{
"remove_user":"myNewUser"
}
结合以下参数执行 VMAccess 脚本:
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM \
--name VMAccessForLinux \
--publisher Microsoft.OSTCExtensions \
--version 1.4 \
--protected-settings delete_user.json
检查或修复磁盘
可以使用 VMAccess 检查并修复添加到 Linux VM 的磁盘。
若要检查并修复磁盘,请创建名为 disk_check_repair.json
的文件并添加以下格式的设置。 将 repair_disk
的数据更改为要修复的磁盘:
{
"check_disk": "true",
"repair_disk": "true, mydiskname"
}
结合以下参数执行 VMAccess 脚本:
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM \
--name VMAccessForLinux \
--publisher Microsoft.OSTCExtensions \
--version 1.4 \
--protected-settings disk_check_repair.json
故障排除和支持
从 Azure 门户和使用 Azure CLI 获取有关扩展部署状态的数据。 若要查看给定 VM 的扩展部署状态,请使用 Azure CLI 运行以下命令。
az vm extension list --resource-group myResourceGroup --vm-name myVM -o table
如果对本文中的任何观点存在疑问,可以联系 Azure 支持上的 Azure 专家。 或者,你也可以提出 Azure 支持事件。 请转到 Azure 支持站点提交请求。 有关使用 Azure 支持的信息,请阅读 Azure 支持常见问题。