我有一台 Azure VM,用于托管多个网站。最近,我登录时发现它需要一些安全更新,因此根据此链接 (https://askubuntu.com/questions/196768/how-to-install-updates-via-command-line),我运行了这个脚本。
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dost-upgrade
它完成了自己的任务,安装了补丁,然后要求我重启虚拟机。重启之后,我现在无法再使用 ssh 连接虚拟机,无法访问 Web 应用程序,也无法 ping 通虚拟机。
我尝试在 Azure 门户中重新启动 VM,尽管状态为“正在运行”,并且 Azure 认为 VM 正在运行,但 VM 完全没有响应。
我感觉补丁可能损坏了虚拟机本身。但我无法判断,因为我无法连接到虚拟机来查看发生了什么,甚至无法访问任何日志。
在这种情况下我能做什么?
答案1
如果您的 VM 是 V2,则启动诊断可能有助于找到问题:
https://azure.microsoft.com/en-us/blog/boot-diagnostics-for-virtual-machines-v2/
帕斯卡
答案2
我在 Azure 上使用 Ubuntu ARM VM 时也遇到了类似的问题。我登录到 VM,运行了与 RoboShop 类似的更新,然后重新启动了 VM。重新启动后,我无法登录。
我不确定是什么导致了这个问题,但我通过重置我的虚拟机密码解决了这个问题。不幸的是,您无法通过新的 Azure 门户重置密码。它只是说“即将推出”。
我使用以下步骤通过 PowerShell 重置了密码:
概括起来,步骤如下:
1) 启动 Azure PowerShell 并连接到 Azure 帐户。如果您像我一样,永远记不住如何执行此操作,请运行以下命令:
Add-AzureAccount
2)切换到ARM命令:
Switch-AzureMode -Name AzureResourceManager
3) 重置 SSH 连接。该命令可能需要一两分钟,所以请耐心等待。完成后,您应该会看到“状态:成功”消息。不要忘记更改“<>”括号中的所有内容:
Set-AzureVMExtension -ResourceGroupName "<ResourceName>" -VMName "<VMName>" -Location "<VMLocation>" -Name "VMAccessForLinux" -Publisher "Microsoft.OSTCExtensions" -ExtensionType "VMAccessForLinux" -TypeHandlerVersion "1.2" -SettingString "{}" -ProtectedSettingString '{"reset_ssh":true}'
4) 通过 Azure 门户重新启动 VM。
5) 设置新密码。请注意,此命令只会更改现有用户名的密码。它不会创建新用户。此命令也需要一段时间,并应生成“状态:成功”消息。更改“<>”括号中的所有内容,并不要忘记现有用户名和新密码:
$RGName = '<ResourceName>'
$VmName = '<VMName>'
$Location = '<VMLocation>'
$ExtensionName = 'VMAccessForLinux'
$Publisher = 'Microsoft.OSTCExtensions'
$Version = '1.2'
$PublicConf = '{}'
$PrivateConf = '{"username":"<ExistingUserName>", "password":"<NewPassword>", "ssh_key":"", "reset_ssh":false, "remove_user":""}'
Set-AzureVMExtension -ResourceGroupName $RGName -VMName $VmName -Location $Location -Name $ExtensionName -Publisher $Publisher -ExtensionType $ExtensionName -TypeHandlerVersion $Version -SettingString $PublicConf -ProtectedSettingString $PrivateConf
6)现在您应该能够使用新密码通过 SSH 进入 VM。
答案3
检查公网 IP 是否发生变化(如果 IP 未配置为静态,则会发生这种情况),以防使用该 IP 从 SSH 进行连接
最好使用 DNS 名称进行连接,您知道的对吗 :)