本文主要介绍无法远程登录Linux实例的排查方法。
应急登录Linux实例:如果您遇到紧急情况,需要尽快登录Linux实例执行运维操作,您可以先使用VNC的方式登录实例,具体操作,请参见通过VNC连接实例。
问题原因
下图为SSH远程登录的关联因素示意图,由此可见,SSH远程登录失败的可能原因较多。如PAM安全框架、安全组、SSH配置等。请您根据实际情况,通过相应的排查方法,排查并解决无法远程连接Linux实例的问题。
没有明确的报错信息
使用自助问题排查工具定位问题
首先,您可以先通过自助问题排查工具定位您实例的问题,然后根据指引完成问题修复操作,自助问题排查工具操作步骤如下:
登录ECS管理控制台。
在左侧导航栏,单击自助问题排查。
在页面左侧顶部,选择目标资源所在的资源组和地域。
在实例问题排查页签下,选择实例无法连接或启动异常,并根据界面提示设置需要排查的实例的信息。配置项说明如下:
具体问题:说明如下。
问题
说明
问题
说明
Workbench内网无法远程连接
(推荐)使用Workbench工具时,无法通过实例的私网IP连接到实例。
Workbench公网无法远程连接
(推荐)使用Workbench工具时,无法通过实例的公网IP连接到实例。
SSH无法连接
(推荐)使用第三方SSH工具无法连接实例。
实例无法远程连接
排查无法连接实例的问题。
待排查实例信息配置:说明如下。
选择Workbench内网无法远程连接、Workbench公网无法远程连接、SSH无法连接时,需要完善以下选项。
配置项
说明
示例
配置项
说明
示例
VPC
选择实例所在的VPC。
vpc-bp1******
发起端
设置您发起SSH连接的主机IP。
选择Workbench内网无法远程连接、Workbench公网无法远程连接会自动填充,无需修改。
如果您不清楚本机的IP地址,可以访问
https://cip.cc/
获取。
47.***.***.***
目的端
选择需要远程连接的实例,即要排查的实例。
i-******
目标端口
目标实例的SSH远程连接端口(默认为22)。
22
单击开始排查,等待系统诊断结果,诊断完成后,可以根据提示完成问题的修复操作。
手动排查问题
在远程连接失败时,如果您没有收到系统返回的报错信息,您可以根据以下步骤手动排查问题:
步骤一:使用阿里云Workbench工具测试远程登录
通过阿里云提供的Workbench工具进行远程登录,Workbench工具在远程登录出现异常时会返回具体的错误信息及解决方案。测试步骤如下:
登录ECS管理控制台。
在左侧导航栏,选择 。
在页面左侧顶部,选择目标资源所在的资源组和地域。
在实例列表页面,找到需要连接的实例,单击对应操作列下的远程连接。
在弹出的远程连接对话框中,单击通过Workbench远程连接对应的立即登录。
测试是否可以远程登录。
Workbench工具将自动填充登录目标实例所需的基本信息,请确认基本信息的正确性并输入登录的用户名和认证信息。并根据以下结果进行处理:通过Workbench远程登录Linux实例的具体操作,请参见通过Workbench远程登录Linux实例。
如仍然无法登录,Workbench工具会返回错误提示和解决方案,请根据系统提示进行处理。处理完毕后重新使用Workbench工具进行远程登录测试。为了便于您解决问题,列举Workbench工具使用时常见的异常问题: 通过VNC远程连接实例的问题
如可以通过Workbench工具正常登录,说明目标实例上的SSH服务正常运行,即排除SSH服务端异常的可能性,继续执行步骤二:检查网络进行排查。
步骤二:检查网络
无法正常远程连接Linux实例时,需要先检查网络是否正常。
用其他网络环境中,不同网段或不同运营商的电脑连接对比测试,判断是本地网络问题还是服务器端的问题。
如果是本地网络问题或运营商问题,请联系本地IT人员或运营商解决。
如果是网卡驱动存在异常,请重新安装。
在本地客户端使用ping命令测试与实例的网络连通性。
网络异常时,请进行抓取数据包进行分析,具体操作,请参见网络异常时如何抓取数据包。
当出现ping丢包或ping不通时,可以通过
tracert
或mtr
等工具进行链路测试来判断问题根源。具体操作,请参见使用MTR工具进行网络链路分析。如果出现间歇性丢包,ECS实例的网络一直处于不稳定状态时,可能是病毒导致。具体操作,请参见使用ping命令测试ECS实例的IP地址间歇性丢包
系统内核没有禁ping的情况下,使用ping命令测试ECS服务器,发现网络不通,可能是服务器系统内部防火墙对客户端进行了drop策略。
具体操作,请参见Linux系统的ECS中没有禁ping却ping不通的解决方法。
步骤三:检查端口和安全组
检查安全组配置是否允许远程连接的端口。
登录ECS管理控制台。
在左侧导航栏,选择 。
在页面左侧顶部,选择目标资源所在的资源组和地域。
在实例列表页面,单击对应的实例ID。
在安全组页签下,单击安全组操作列的管理规则。
在安全组规则页面,您可以选择以下任意一种方式添加安全组入方向规则,具体操作,请参见添加安全组规则。
方式一:快速添加安全组规则
授权策略:允许
端口范围:SSH(22)
授权对象:设置为本机IP。可以访问
https://cip.cc/
获取本机IP。
方式二:手动添加安全组规则
授权策略:允许
优先级:1(代表安全规则中优先级最高,数字越小优先级越高)
协议类型:自定义(TCP)
端口范围:SSH(22)
授权对象:设置为本机IP。可以访问
https://cip.cc/
获取本机IP。
使用以下命令,进行端口测试,判断端口是否正常。
telnet [$IP] [$Port]
[$IP]指Linux实例的IP地址。
[$Port]指Linux实例的RDP端口号。
系统显示类似如下,比如执行
telnet 192.168.0.1 22
命令,正常情况下返回结果类似如下。Trying 192.168.0.1 ... Connected to 192.168.0.1. Escape character is '^]'
如果端口测试失败,请参见使用ping命令正常但端口不通时的端口可用性探测说明进行排查。
步骤四:检查CPU负载、带宽及内存使用情况
无法正常远程连接Linux实例时,可能是因为CPU负载、带宽不足或内存不足导致。
根据是否存在CPU负载过高情况,选择相应操作。
存在CPU负载过高情况。
若应用程序有大量的磁盘访问、网络访问行为、高计算需求,CPU负载过高是正常结果。建议您升配实例规格来解决资源瓶颈问题,具体操作,请参见升降配方式概述。
CPU负载过高的解决方法,请参见Linux系统CPU负载的查询和案例分析。
不存在CPU负载过高情况,请继续下一步排查。
排查是否存在公网带宽不足问题。
无法远程连接可能是公网带宽不足导致的,具体排查方法如下。
排查是否存在内存不足问题。
远程连接Linux实例后,不能正常显示桌面并直接退出,也没有错误信息提示。这种情况可能是服务器内存不足导致,需要检查服务器的内存使用情况。具体操作如下。
使用VNC方式登录Linux实例。
具体操作,请参见通过密码认证登录Linux实例。
查看内存使用情况,如果存在内存不足情况,建议您升配实例规格来解决资源瓶颈问题,具体操作,请参见升降配方式概述。
存在明确的报错信息
远程登录失败时,系统通常会返回报错信息。您可以根据报错信息,快速定位问题原因及解决方案。
PAM安全框架
Linux系统的PAM安全框架可以加载相关安全模块,对云服务器的账户策略、登录策略等进行访问控制。如果相关配置存在异常,或触发了相关策略,就可能会导致SSH登录失败。根据不同报错信息,可参见如下常见案例进行解决:
Linux实例系统环境配置
Linux内的系统环境,例如中毒、账户配置、环境变量配置等,如果出现异常,也可能会导致SSH登录失败。根据不同报错信息,可参见如下常见案例进行解决:
SSH服务及参数配置
SSH服务的默认配置文件为/etc/ssh/sshd_config
。配置文件中的相关参数配置异常,或启用了相关特性或策略,也可能会导致SSH登录失败。根据不同报错信息,可参见如下常见案例进行解决:
SSH服务关联目录或文件配置
SSH服务基于安全性考虑,在运行时,会对相关目录或文件的权限配置、属组等进行检查。过高或过低的权限配置,都可能会引发服务运行异常,进而导致客户端登录失败。根据不同报错信息,可参见如下常见案例进行解决:
SSH服务密钥配置
SSH服务采用非对称加密技术,对所传输的数据进行加密。客户端及服务端会交换和校验相关密钥信息的有效性。根据不同报错信息,可参见如下常见案例进行解决:
- 本页导读 (1)
- 问题原因
- 没有明确的报错信息
- 使用自助问题排查工具定位问题
- 手动排查问题
- 存在明确的报错信息
- PAM安全框架
- Linux实例系统环境配置
- SSH服务及参数配置
- SSH服务关联目录或文件配置
- SSH服务密钥配置