我最近停止了一个包含 14 个虚拟机的订阅,并在几天后重新启动。现在,除了用于 MongoDB 的 6 个虚拟机外,我的所有虚拟机都运行正常。
它们响应 ping,因此在 Azure 仪表板上显示为在线,但没有回答任何其他问题。
我尝试过(从不同的位置,在 Azure 云内外)
- ssh:连接到主机*端口*:连接被拒绝
- telnet:无法连接到远程主机:连接被拒绝
- mongo:异常:连接失败
ssh 和 mongo 的端口在 azure 中打开了。我尝试通过 azure 仪表板重新启动虚拟机几次,它们似乎成功重新启动,但仍然拒绝所有连接。
我已经寻找过类似的问题,我发现最好的解决方案就是等待......这个问题已经出现了 7 天,等待不再是一种选择。
答案1
有一个比下载/上传 VHD 更好、更快的解决方案。如上所述,问题“被识别为 sshd_config 文件中缺少换行符!“
0. 但第一步应该有所不同,因为否则,如果您删除其中的最后一个 VM,您可能会丢失当前的云服务 IP - 而在 Web 服务器上,这是一个严重的问题。因此,首先,在与问题 VM 相同的地理区域中创建一个新的 VM,以便云服务至少有一个正在运行的 VM,并且您的当前 IP 得以保留。
删除有问题的虚拟机,但不要删除关联的磁盘。(您必须删除有问题的虚拟机才能释放我们稍后将使用的关联磁盘上的锁)。记下关联磁盘的名称 (AD)。
选择新的虚拟机 -> 仪表板 -> 附加 -> “附加磁盘”(请注意,仅当问题虚拟机的关联磁盘已释放时,“附加磁盘”选项才可用)
在打开的弹出窗口中选择正确的 AD 名称。
现在通过 SSH 进入新的 VM 并挂载 AD:
sudo mkdir /tmp/dsk
sudo mount /dev/sdc1 /tmp/dsk
(AD 通常是 /dev/sdc1;如果不是,您可以通过 sudo cat /var/log/syslog | grep scsi 找到它并查找消息“附加的 SCSI 磁盘”前面的名称)
- sudo nano /tmp/dsk/etc/ssh/sshd_config
在我们的例子中,在文件末尾,我们有一个设置“UsePAM yesClientAliveInterval 180”——显然,升级错误地删除了“yes”后面的换行符!因此,我们插入了换行符,保存了文件,并在 sshd_config 恢复后按照以下步骤操作。
(您可能还想对 /tmp/dsk/etc/ssh/ssh_config 和 /etc/ssh/sshd_config 进行差异比较,以查看是否有任何其他配置已关闭)
返回 Azure 仪表板:选择新的 VM -> 仪表板 -> 分离磁盘并分离 AD
启动一个类似于问题虚拟机的新虚拟机:+ 新建 -> 计算 -> 虚拟机 -> 从图库 -> 我的磁盘 -> AD(AD 应该显示在这里)
就是这样 - 希望 SSH 现在可以工作!
答案2
许多 Azure 安装受到了严重打击Ubuntu 中的这个错误这会导致人们因配置错误而被锁定在虚拟机之外。如果您从停止状态启动虚拟机,或重新启动虚拟机(运行后apt get upgrade
),则会出现此错误。
Azure 安装的修复方法是下载 VHD、将 VHD 安装为磁盘、打开 /etc/sshd_config 文件并修复故障行,然后重新上传 vhd。