我有一个运行 Ubuntu 14.04 的经典 Azure VM。它运行在标准 A0(1 核,0.75 GB 内存)中,我使用 Web 门户将其调整为标准 A2。
调整大小后,SSH 不再起作用。它警告密钥已更改,在我从已知主机中删除条目后,它连接到会话但不接受该azureuser
帐户的密码。
我尝试使用以下方法重置密码:
azure vm extension set compilemachine "VMAccessForLinux" "Microsoft.OSTCExtensions"
"1.*" -r "Microsoft.OSTCExtensions.VMAccessForLinux"
但由于缺少 Provision Guest Agent,CLI 无法工作
info: Executing command vm extension set
+ Getting virtual machines
error: Provision Guest Agent must be enabled on the VM before setting VM Extension.
error: Error information has been recorded to /Users/user/.azure/azure.err
error: vm extension set command failed
关于如何从虚拟机恢复数据,或者如何恢复对虚拟机的访问,有什么提示吗?
答案1
在紧急情况下,您可以下载虚拟机的虚拟硬盘并将其安装在任何 Windows 系统上(或将其附加到 Hyper-V 虚拟机)。
答案2
我们可以使用这个脚本来重置密码:
1. 创建一个.json 文件,如下所示:
{
"username": "azureuser",
"password": "newpassword"
}
然后将其保存在您的电脑上。2
.使用 CLI 登录 azure:
azure login
azure config mode asm
azure vm extension set ubuntu VMAccessForLinux Microsoft.OSTCExtensions "1.4" --private-config-path C:\Users\Desktop\jason\protected.json
info: Executing command vm extension set
+ Getting virtual machines
+ Updating vm extension
info: vm extension set command OK
之后完全的,我们可以使用新密码登录虚拟机(请尝试使用完整限定域名 (FQDN)登录此VM:xxxx.cloudapp.net)。
顺便说一句,如果再次出现错误,请使用PowerShell检查ProvisionGuestAgent值:
Add-AzureAccount
$vm = Get-AzureVM -ServiceName 'MyServiceName' -Name 'MyVMName'
$vm.GetInstance().ProvisionGuestAgent
如果该值未设置为“true”,我们应该使用流命令将ProvisionGuestAgent设置为“True”:
$vm.GetInstance().ProvisionGuestAgent = $true
关于如何从虚拟机恢复数据,或者如何恢复对虚拟机的访问,有什么提示吗?
如果要从虚拟机中恢复数据,我们可以再创建另一个 VM2,然后删除此虚拟机(保留磁盘),并将磁盘挂载到 VM2,这样我们就可以将数据复制到新的虚拟机中。
我们也可以添加新用户到 vm1 的 /etc/passwd 和 /etc/shadow 和 /etc/group。完成后,我们可以使用此 VHD 来创建一个新的 VM,与之前的相同。