![在 Azure 中的 CentOS 7.2 盒上配置/修复 SSH 访问](https://linux22.com/image/692199/%E5%9C%A8%20Azure%20%E4%B8%AD%E7%9A%84%20CentOS%207.2%20%E7%9B%92%E4%B8%8A%E9%85%8D%E7%BD%AE%2F%E4%BF%AE%E5%A4%8D%20SSH%20%E8%AE%BF%E9%97%AE.png)
我认为自己是 Azure 的“中级”用户,所以请放轻松!所以我正在 Azure(资源管理器模型)DS3_V2 中的 CentOS 7.2(OpenLogic)VM 上构建 Magento 网站。
一切都很顺利,SSH 访问正常,Apache 运行正常,网站显示正常(尽管仍在开发中)。然而昨天,尝试通过 SSH 进入框时,PuTTY 返回“连接被拒绝”错误。我和我们的开发人员都不知道发生了什么,我希望有人能帮忙。以下是我迄今为止尝试解决的问题:
- 从门户重置 SSH 配置,没有任何效果。
- 备份了虚拟机,将其恢复为新的虚拟机,重新部署了备份,但仍然没有任何效果。
- 检查了 NSG 是否允许从我的 IP 进行 SSH,没有问题。
- 我从未接触过 iptables 或 selinux,开发人员向我保证他们也没有接触过。
- 对我来说,启动诊断中没有什么特别突出的地方(尽管如果需要我可以提供这些信息)。
看来开发人员对 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 服务未运行,请使用 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 日志
如果您有任何错误日志,欢迎在这里回复,我们可以一起分析。
问候,
沃尔特