对连接到 Azure 中的 Linux VM 时出现的问题进行 SSH 故障排除的具体步骤
适用于:✔️ Linux VM
有许多可能的原因会导致 SSH 客户端无法连接到 VM 上的 SSH 服务。 如果已经执行了较常规的 SSH 故障排除步骤,则需要进一步排查连接问题。 本文将指导用户完成详细的故障排除步骤,以确定 SSH 连接失败的位置及其解决方法。
采取预备步骤
下图显示了与错误相关的组件。
以下步骤将帮助用户查明失败的原因,并得出解决方法或应对措施。
在门户中检查 VM 的状态。 在 Azure 门户中,选择“虚拟机”>“VM 名称”。
VM 的状态窗格应显示“正在运行”。 向下滚动以显示计算、存储和网络资源的最近活动。
选择“设置”检查终结点、IP 地址、网络安全组和其他设置。
VM 必须有为 SSH 流量定义的终结点,可以在“终结点”或“网络安全组”查看 SSH 流量。 将 VM 中使用 Resource Manager 创建的终结点存储在网络安全组中。 请验证对网络安全组应用的规则,以及子网中是否引用了这些规则。
要验证网络连接,请检查所配置的终结点,并了解是否可通过其他协议(例如 HTTP 或其他服务)连接到该 VM。
在执行这些步骤之后,重新尝试 SSH 连接。
查找问题的来源
如果计算机上的 SSH 客户端无法连接到 Azure VM 上的 SSH 服务,则原因可能是以下区域存在问题或配置错误:
来源 1:SSH 客户端计算机
要将计算机从失败原因中排除,请验证计算机是否能够与其他基于 Linux 的本地计算机建立 SSH 连接。
如果连接失败,请检查计算机上是否存在以下问题:
- 本地防火墙设置阻止了入站或出站 SSH 流量 (TCP 22)
- 本地安装的客户端代理软件阻止了 SSH 连接
- 本地安装的网络监视软件阻止了 SSH 连接
- 监视流量或允许/禁止特定类型流量的其他类型的安全软件
如果存在其中一种情况,请暂时禁用相关软件,并尝试与本地计算机建立 SSH 连接,以找出计算机上阻止连接的原因。 然后,与网络管理员合作以更正软件设置,从而允许 SSH 连接。
如果使用的是证书身份验证,则需验证你是否具有这些权限以访问主目录中的 .ssh 文件夹:
- Chmod 700 ~/.ssh
- Chmod 644 ~/.ssh/*.pub
- Chmod 600 ~/.ssh/id_rsa(或存储私钥的其他任何文件)
- Chmod 644 ~/.ssh/known_hosts(包含已通过 SSH 连接到的主机)
来源 2:组织边缘设备
要将组织边缘设备从失败原因中排除,请验证直接连接到 Internet 的计算机是否可以与 Azure VM 建立 SSH 连接。 如果要通过站点到站点 VPN 或 Azure ExpressRoute 连接访问 VM,请跳到 源 3:网络安全组。
如果没有直接连接到 Internet 的计算机,可以在其自己的资源组或云服务中创建新的 Azure VM,并使用该 VM。 有关详细信息,请参阅在 Azure 中创建运行 Linux 的虚拟机。 测试完成后,请删除资源组或 VM 以及云服务。
如果可以创建与直接连接到 Internet 的计算机之间的 SSH 连接,则检查组织边缘设备中是否存在以下问题:
- 内部防火墙阻止了与 Internet 的 SSH 连接
- 代理服务器阻止了 SSH 连接
- 边界网络中的设备上运行的入侵检测或网络监视软件阻止了 SSH 连接
与网络管理员合作以更正组织边缘设备的设置,从而允许与 Internet 建立 SSH 流量连接。
源 3:网络安全组
通过使用网络安全组,可以对允许的入站和出站流量进行更精细的控制。 可以创建跨 Azure 虚拟网络中的子网和云服务的规则。 检查网络安全组规则,以确保允许来自和去往 Internet 的 SSH 流量。 有关详细信息,请参阅关于网络安全组。
还可使用 IP Verify 验证 NSG 配置。 有关详细信息,请参阅 Azure network monitoring overview(Azure 网络监视概述)。
源 4:基于 Linux 的 Azure 虚拟机
最后一个可能出现问题的来源是 Azure 虚拟机本身。
如果尚未这样做,请按照为基于 Linux 的虚拟机重置密码中的说明进行操作。
再次尝试从计算机建立连接。 如果仍然失败,则可能存在以下问题:
- SSH 服务未在目标虚拟机上运行。
- 未在 TCP 端口 22 上侦听 SSH 服务。 要进行测试,可在本地计算机上安装一个远程登录客户端,并运行“telnet cloudServiceName.cloudapp.net 22”。 此步骤确定虚拟机是否允许与 SSH 终结点进行入站和出站通信。
- 目标虚拟机上的本地防火墙具有阻止入站或出站 SSH 流量的规则。
- Azure 虚拟机上运行的入侵检测或网络监视软件阻止了 SSH 连接。
其他资源
有关对应用程序访问进行故障排除的详细信息,请参阅 排查对在 Azure 虚拟机上运行的应用程序的访问问题。
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区。