对连接到 Azure 中 Linux VM 时出现的问题进行详细的 SSH 故障排除的步骤
有许多可能的原因会导致 SSH 客户端无法访问 VM 上的 SSH 服务。 如果已经执行了较常规的 SSH 故障排除步骤,则需要进一步排查连接问题。 本文指导用户完成详细的故障排除步骤,以确定 SSH 连接失败的位置以及解决方法。
采取预备步骤
下图显示了与错误相关的组件。
以下步骤帮助用户查明失败的原因,并得出解决方法或应对措施。
在门户中检查 VM 的状态。 在 Azure 门户中,选择“虚拟机” > “VM 名称”。
VM 的状态窗格应显示“正在运行” 。 向下滚动以显示计算、存储和网络资源的最近活动。
选择“设置”检查终结点、IP 地址、网络安全组和其他设置。
VM 必须有为 SSH 流量定义的终结点,可以在“终结点”或“网络安全组”查看 SSH 流量。 将 VM 中使用资源管理器创建的终结点存储在网络安全组中。 此外,请验证对网络安全组应用的规则,以及子网中是否引用了这些规则。
若要验证网络连接,检查配置的终结点,并了解是否可通过其他协议(如 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,请跳转到 来源 4:网络安全组。
如果没有直接连接到 Internet 的计算机,可以在其自己的资源组或云服务中创建新的 Azure VM,并进行使用。 有关详细信息,请参阅在 Azure 中创建运行 Linux 的虚拟机。 测试完成后,请删除资源组或 VM 以及云服务。
如果可以创建与直接连接到 Internet 的计算机之间的 SSH 连接,则检查组织边缘设备中是否存在以下问题:
- 内部防火墙阻止了与 Internet 的 SSH 连接
- 代理服务器阻止了 SSH 连接
- 边界网络中的设备上运行的入侵检测或网络监视软件阻止了 SSH 连接
与网络管理员合作以更正组织边缘设备的设置,从而允许与 Internet 建立 SSH 流量连接。
来源 3:云服务终结点和 ACL
Note
此来源仅适用于使用经典部署模型创建的 VM。 对于使用 Resource Manager 创建的 VM,请跳转到 来源 4:网络安全组。
要将云服务终结点和 ACL 从失败原因中排除,请验证同一虚拟网络中的其他 Azure VM 是否可与 VM 建立 SSH 连接。
如果同一虚拟网络中没有其他 VM,可以轻松创建一个 VM。 有关详细信息,请参阅使用 CLI 在 Azure 上创建 Linux VM。 测试完成后,请删除多余的 VM。
如果可以与同一虚拟网络中的某个 VM 建立 SSH 连接,请检查以下方面:
- 目标 VM 上 SSH 流量的终结点配置。 终结点的专用 TCP 端口应该与 VM 上的 SSH 服务正在侦听的 TCP 端口匹配。 (默认端口为 22)。 请在 Azure 门户中选择“虚拟机” > “VM 名称” > “设置” > “终结点”来验证 SSH TCP 端口号。
- 目标虚拟机上的 SSH 流量终结点的 ACL。 ACL 允许指定基于源 IP 地址允许或拒绝的从 Internet 传入的流量。 错误配置的 ACL 可能会阻止 SSH 流量传入终结点。 检查 ACL 以确保允许从代理服务器或其他边缘服务器的公共 IP 地址传入的流量。 有关详细信息,请参阅关于网络访问控制列表 (ACL)。
若要将终结点从问题原因中排除,请删除当前终结点,创建另一个终结点,然后指定 SSH 名称(公共和专用端口号为 TCP 端口 22)。 有关详细信息,请参阅在 Azure 中的虚拟机上设置终结点。
来源 4:网络安全组
通过使用网络安全组,可以对允许的入站和出站流量进行更精细的控制。 可以创建跨 Azure 虚拟网络中的子网和云服务的规则。 检查网络安全组规则,确保允许传入和传出 Internet 的 SSH 流量。 有关详细信息,请参阅关于网络安全组。
来源 5:基于 Linux 的 Azure 虚拟机
最后一个可能出现问题的来源是 Azure 虚拟机本身。
如果尚未这样做,请遵循如何为基于 Linux 的虚拟机重置密码或 SSH 中的说明。
尝试从计算机重新建立连接。 如果仍然失败,则可能存在以下问题:
- SSH 服务未在目标虚拟机上运行。
- 未在 TCP 端口 22 上侦听 SSH 服务。 如果要测试,可在本地计算机上安装一个 telnet 客户端,并运行“telnet cloudServiceName.chinacloudapp.cn 22”。 此步骤确定虚拟机是否允许与 SSH 终结点进行入站和出站通信。
- 目标虚拟机上的本地防火墙具有阻止入站或出站 SSH 流量的规则。
- Azure 虚拟机上运行的入侵检测或网络监视软件阻止了 SSH 连接。
其他资源
有关对应用程序访问进行故障排除的详细信息,请参阅对在 Azure 虚拟机上运行的应用程序的访问进行故障排除
立即访问http://market.azure.cn
对连接到 Azure 中 Linux VM 时出现的问题进行详细的 SSH 故障排除的步骤的更多相关文章
- Windows Azure 上 Linux VM 中的交换空间 – 第 2 部分
本文章由 Azure CAT 团队的 Piyush Ranjan (MSFT) 撰写. 在前一篇文章 Windows Azure 上Linux VM 中的交换空间第 1 部分中,我介绍了在默认情况下, ...
- 排查在 Azure 中创建、重启 Linux VM 或调整其大小时发生的分配故障
创建 VM.重启已停止(解除分配)的 VM 和重设 VM 大小时,Azure 会为订阅分配计算资源. 执行这些操作时,即使尚未达到 Azure 订阅限制,也可能偶尔收到错误. 本文说明一些常见分配故障 ...
- 针对通过 SSH 连接到 Azure Linux VM 时发生的失败、错误或被拒绝问题进行故障排除
尝试连接到 Linux 虚拟机 (VM) 时,有多种原因可能会导致安全外壳 (SSH) 错误.SSH 连接失败或被拒绝. 本文帮助用户找出原因并更正问题. 可以使用 Azure 门户.Azure CL ...
- Azure 中 Linux 虚拟机的大小
本文介绍可用于运行 Linux 应用和工作负荷的 Azure 虚拟机的可用大小与选项. 此外,还提供在计划使用这些资源时要考虑的部署注意事项. 本文也适用于 Windows 虚拟机. 类型 大小 说明 ...
- Azure上Linux VM误配防火墙的恢复方法
在实际运维中,防火墙把自己挡在机器外面的情况会时有发生.如何快速的恢复对运维人员是很重要的. 本文将介绍如何用Azure Extension实现不通过ssh对VM进行操作的方法. 之前写过一遍Blog ...
- Azure上Linux VM防DDOS攻击:使用Apache mod_evasive
部署在云端的虚拟机和web服务,很容易受到DoS护着DDoS的服务攻击,让一些新上线的业务苦不堪言,当然各个云服务提供商也有不同层面DDOS的防护,然而由于防护粒度,攻击复杂度的关系,未必可以满足你的 ...
- VMware中Linux启动时***Host SMBus controller not enabled的解决方法
Ubuntu18.04 64位 1.1如果能进入图形界面 在终端输入sudo su 键入root密码 //切换到root用户 1.2 如果不能进入图形界面,在VMware进入界面时按下shift进入G ...
- Azure上Linux VM DDOS攻击预防: 慢速攻击
在上篇博客(http://www.cnblogs.com/cloudapps/p/4996046.html)中,介绍了如何使用Apache的模块mod_evasive进行反DDOS攻击的设置,在这种模 ...
- 调用 Dll 中的函数时,出现栈(STACK)的清除问题 -> 故障模块名称: StackHash_0a9e
在一个名为 test.dll 文件中,有一个 Max() 函数的定义是: #ifdef BUILD_DLL #define DLL_EXPORT __declspec(dllexport) __std ...
随机推荐
- Django Rest Framework(阿奇)
Django Rest Framework 一. 什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中 ...
- Java中的RSA加解密工具类:RSAUtils
本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.utils.log.LogUtils; ...
- 那些H5用到的技术(5)——视差滚动效果
前言原理使用方式结合swiper.js 前言 视差滚动(Parallax Scrolling)是指让多层背景以不同的速度移动,形成立体的运动效果,带来非常出色的视觉体验. 目前最火热的视差开源库为pa ...
- eclipse中修改tomcat的配置,解决全局性的get提交乱码问题
在项目中如果页面提交方式为get的时候,中文会出现乱码. 为了解决乱码问题我们有两种办法. 第一种:在程序中加入get提交乱码的解决 String username = new String(user ...
- 【debian】解决debian中文安装后出现乱码的问题
由于安装debian选择语言时选择了简体中文安装,但内核没有中文字库,导致某些字符显示为乱码(菱形,方块). 解决办法: 普通用户如果没有设置sudo权限,首先切换到root权限.然后: apt-ge ...
- D3学习笔记一
D3学习笔记一 什么是D3? D3(全称Data Driven Documents)是一个用来做Web数据可视化的JavaScript函数库.D3也称之为D3.js. D3是2011年由Mike Bo ...
- html的framset使用
frameset主要用在显示多个页面的需求下: 看代码: <html> <head> <title>html frameset test</title> ...
- .netCore2.0 WebApi 传递form表单
随着it的技术发展,目前越来越多的项目采用前后端分离的开发模式,通过webapi提供接口数据来进行交互 最近项目用的是.netCore WebApi,在最近的项目使用中发现一些问题,进行记录.个人简介 ...
- Firebird Case-Insensitive Searching 大小写不敏感查找
Firebird 默认是大小写敏感,在检索的时候. 要想不敏感检索,两种方法: 1.where upper(name) = upper(:flt_name) 2.检索时指定字符集collation,例 ...
- wcf 登录认证 angular 认证重定向
自定义认证管理器,分为两级:1.登陆认证.2.权限认证.权限主要是用户.角色.角色用户关系.功能(系统资源).角色功能关系,5部分决定用户的权限(视图). 两层认证都通过后,更新session的最新交 ...