本文主要介绍无法远程登录Linux实例的排查方法。
问题原因
下图为SSH远程登录的关联因素示意图,由此可见,SSH远程登录失败的可能原因较多。如PAM安全框架、安全组、SSH配置等。请您根据实际情况,通过相应的排查方法,排查并解决无法远程连接Linux实例的问题。
快速登录Linux实例
如果您遇到紧急情况,需要尽快登录Linux实例,请参见以下操作步骤,先检查ECS实例的状态,然后通过云助手向Linux实例发送命令或通过VNC登录实例,具体步骤如下:
步骤一:检查ECS实例状态
无论何种原因导致无法远程登录ECS实例,请先检查实例的状态。只有当ECS实例为运行中状态时,才能对外提供业务访问。检查步骤如下:
登录ECS管理控制台。
在左侧导航栏,选择 。
在页面左侧顶部,选择目标资源所在的资源组和地域。
步骤二:通过VNC登录ECS实例
如果云助手无法使用或者无法满足您的使用需求,您还可以通过阿里云VNC工具进行远程登录,使用方法如下:
登录ECS管理控制台。
在左侧导航栏,选择 。
在页面左侧顶部,选择目标资源所在的资源组和地域。
在实例列表页面,找到需要连接的实例,在操作列中,单击远程连接。
在弹出的远程连接对话框中,单击展开其他登录方式,然后单击通过VNC远程连接对应的立即登录。
登录实例操作系统。
输入登录用户(例如root、ecs-user),然后按
Enter
键。输入实例登录密码,然后按
Enter
键。说明登录Linux实例时界面不会显示密码的输入过程,请您确保输入的密码正确。
步骤三:通过云助手向Linux实例发送命令
您可以尝试通过阿里云云助手向Linux实例发送命令,云助手的使用步骤如下:
没有明确的报错信息
在远程连接失败时,如果您没有收到系统返回的报错信息,并且ECS实例是运行中状态,然后再根据以下步骤进行排查:
步骤一:使用阿里云Workbench工具测试远程登录
通过阿里云提供的Workbench工具进行远程登录,Workbench工具在远程登录出现异常时会返回具体的错误信息及解决方案。测试步骤如下:
登录ECS管理控制台。
在左侧导航栏,选择 。
在页面左侧顶部,选择目标资源所在的资源组和地域。
在实例列表页面,找到需要连接的实例,单击对应操作列下的远程连接。
在弹出的远程连接对话框中,单击通过Workbench远程连接对应的立即登录。
测试是否可以远程登录。
Workbench工具将自动填充登录目标实例所需的基本信息,请确认基本信息的正确性并输入登录的用户名和认证信息。并根据以下结果进行处理:通过Workbench远程登录Linux实例的具体操作,请参见通过Workbench远程登录Linux实例。
如仍然无法登录,Workbench工具会返回错误提示和解决方案,请根据系统提示进行处理。处理完毕后重新使用Workbench工具进行远程登录测试。为了便于您解决问题,列举Workbench工具使用时常见的异常问题: Workbench远程连接问题(Linux)
如可以通过Workbench工具正常登录,说明目标实例上的SSH服务正常运行,即排除SSH服务端异常的可能性,继续执行步骤二:检查网络进行排查。
步骤二:检查网络
无法正常远程连接Linux实例时,需要先检查网络是否正常。
用其他网络环境中,不同网段或不同运营商的电脑连接对比测试,判断是本地网络问题还是服务器端的问题。
如果是本地网络问题或运营商问题,请联系本地IT人员或运营商解决。
如果是网卡驱动存在异常,请重新安装。
在本地客户端使用ping命令测试与实例的网络连通性。
网络异常时,请进行抓取数据包进行分析,具体操作,请参见网络异常时如何抓取数据包。
当出现ping丢包或ping不通时,可以通过
tracert
或mtr
等工具进行链路测试来判断问题根源。具体操作,请参见使用ping命令丢包或不通时的链路测试方法。如果出现间歇性丢包,ECS实例的网络一直处于不稳定状态时,可能是病毒导致。具体操作,请参见使用ping命令测试ECS实例的IP地址间歇性丢包
系统内核没有禁ping的情况下,使用ping命令测试ECS服务器,发现网络不通,可能是服务器系统内部防火墙对客户端进行了drop策略。
具体操作,请参见Linux系统的ECS中没有禁ping却ping不通的解决方法。
步骤三:检查端口和安全组
检查安全组配置是否允许远程连接的端口。
登录ECS管理控制台。
在左侧导航栏,选择 。
在页面左侧顶部,选择目标资源所在的资源组和地域。
在实例列表页面,单击对应的实例ID。
在安全组页签下,单击安全组操作列的管理规则。
在安全组规则页面,您可以选择以下任意一种方式添加安全组规则,具体操作,请参见添加安全组规则。
方式一:快速添加安全组规则
授权策略:允许
端口范围:SSH(22)
授权对象:0.0.0.0/0(代表所有IP访问)
方式二:手动添加安全组规则
授权策略:允许
优先级:1(代表安全规则中优先级最高,数字越小优先级越高)
协议类型:自定义(TCP)
端口范围:SSH(22)
授权对象:0.0.0.0/0(代表所有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服务采用非对称加密技术,对所传输的数据进行加密。客户端及服务端会交换和校验相关密钥信息的有效性。根据不同报错信息,可参见如下常见案例进行解决: