在 Azure 中的 CentOS 7.2 盒上配置/修复 SSH 访问

在 Azure 中的 CentOS 7.2 盒上配置/修复 SSH 访问

我认为自己是 Azure 的“中级”用户,所以请放轻松!所以我正在 Azure(资源管理器模型)DS3_V2 中的 CentOS 7.2(OpenLogic)VM 上构建 Magento 网站。

一切都很顺利,SSH 访问正常,Apache 运行正常,网站显示正常(尽管仍在开发中)。然而昨天,尝试通过 SSH 进入框时,PuTTY 返回“连接被拒绝”错误。我和我们的开发人员都不知道发生了什么,我希望有人能帮忙。以下是我迄今为止尝试解决的问题:

  1. 从门户重置 SSH 配置,没有任何效果。
  2. 备份了虚拟机,将其恢复为新的虚拟机,重新部署了备份,但仍然没有任何效果。
  3. 检查了 NSG 是否允许从我的 IP 进行 SSH,没有问题。
  4. 我从未接触过 iptables 或 selinux,开发人员向我保证他们也没有接触过。
  5. 对我来说,启动诊断中没有什么特别突出的地方(尽管如果需要我可以提供这些信息)。

看来开发人员对 Azure 并不像我想象的那么熟悉,因为他们没有使用我为他们附加的专用持久 VHD,而是在 32GB 系统驱动器上安装了 Magento 和 Web 内容,或者(但愿不会发生)在 VM 附带的 127GB 临时驱动器上(他们现阶段无法告诉我他们做了什么)。

因此,尽管我对确切问题的原因感到困惑,但我更紧迫的问题是 - 有没有办法可以进入查看和配置 SSH 服务器,而没有 SSH 访问权限?!我在考虑 Azure CLI 或(不太可能是 Azure Powershell)?将 VHD 安装在另一台虚拟机上并进入配置文件?!

在此阶段的任何想法都将有很大帮助,因为这是一个关键项目,现在由于这个问题而停滞不前。

谢谢,托尼

答案1

不幸的是,在 Azure 中,无法通过控制台访问虚拟机。如果丢失远程连接,则需要按照上述故障排除步骤操作。

有一种方法可以通过 Azure VM 扩展在 VM 上运行自定义脚本。请参阅https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-linux-classic-lamp-script/了解更多详情。您可以尝试编写一个脚本来禁用防火墙和/或重置 SSH。

github 的链接是https://github.com/Azure/custom-script-extension-linux

答案2

据我所知,错误可能是由于 SSHD 服务未运行或 SSHD 监听端口已更改而导致的。如果您无法通过控制台访问虚拟机,我们将使用虚拟机扩展“CustomScriptForLinux”来获取 SSH 日志。

如果可以的话,我建议你在同一个 VNet 中创建一个 VM,这可以帮助分析这个问题。问题解决后你可以删除它。请参考以下步骤。

1.确保 SSHD 实际监听的端口

•保存为名称“script.sh”

netstat -natp | grep sshd|grep LISTEN|awk'{打印$4}'

• 安装“CustomScriptForLinux”资源组-->您的虚拟机-->扩展-->添加-->CustomScriptForLinux

• 上传 script.sh

• 获取 SSHD 端口 在此处输入图片描述

如果 SSHD 服务未运行,请使用 CustomScriptForLinux 运行以下命令

服务 sshd 重启

2. 禁用防火墙

如果可能的话,我建议您在分析问题时禁用防火墙。请使用 CustomScriptForLinux 运行以下命令。

服务 iptables 停止

3.从新虚拟机使用 SSH,获取 SSH 日志

• 登录新的 VM

• 您可以获取客户端 ssh 调试日志

ssh -vvvv -p 22 用户@ip (22 监听端口)

• 获取服务 sshd 日志

tail -10 /var/log/消息

另存为名称“script.sh”

安装“CustomScriptForLinux”。如果已经安装,请将其卸载。

从虚拟机获取 sshd 日志

如果您有任何错误日志,欢迎在这里回复,我们可以一起分析。

问候,

沃尔特

相关内容