免责声明: 本文档可能包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。
本文主要介绍无法远程登录Linux实例的案例和排查方法。
本文主要通过如下2个方面解决无法远程登录Linux实例的问题:
SSH无法远程登录Linux实例的常见案例如下所示,可根据实际报错信息选择不同的方案进行排查和处理:
Linux系统的PAM安全框架可以加载相关安全模块,对云服务器的账户策略、登录策略等进行访问控制。如果相关配置存在异常,或触发了相关策略,就可能会导致SSH登录失败。根据不同报错信息,可参见如下常见案例进行解决:
Linux内的系统环境,例如中毒、账户配置、环境变量配置等,如果出现异常,也可能会导致SSH登录失败。根据不同报错信息,可参见如下常见案例进行解决:
SSH服务的默认配置文件为/etc/ssh/sshd_config
。配置文件中的相关参数配置异常,或启用了相关特性或策略,也可能会导致 SSH登录失败。根据不同报错信息,可参见如下常见案例进行解决:
SSH服务基于安全性考虑,在运行时,会对相关目录或文件的权限配置、属组等进行检查。过高或过低的权限配置,都可能会引发服务运行异常,进而导致客户端登录失败。根据不同报错信息,可参见如下常见案例进行解决:
SSH服务采用非对称加密技术,对所传输的数据进行加密。客户端及服务端会交换和校验相关密钥信息的有效性。根据不同报错信息,可参见如下常见案例进行解决:
若常见报错案例没有解决问题,可以参考如下流程排查问题:
说明:
- 以下操作在CentOS 6.5 64位操作系统中进行过测试,在其他Linux发行版中可能存在差异,具体情况请参阅对应Linux发行版的官方文档。
- 客户端SSH连接Linux实例是运维操作的主要途径。通过管理终端可以用于临时运维操作,或者在客户端SSH登录异常时,用于问题排查和分析。
- 下图为SSH登录关联因素示意图。由此可见,通过SSH无法远程登录Linux实例时,可能涉及的关联因素较多。
无法远程连接可能是公网带宽不足导致的,具体排查方法如下。可通过续费ECS实例,然后重启实例解决。详情参见手动续费或者自动续费。
客户端无法正常登录时,先使用不同的SSH客户端基于相同账户信息进行登录测试。如果能正常登录,则判断是客户端配置问题,需要对客户端配置或软件运行情况做排查分析。关于如何使用SSH客户端登录Linux实例,您可以参见远程连接Linux实例。
无论何种原因导致无法远程连接实例,请先尝试用阿里云提供的远程连接功能进行连接,确认实例还有响应,没有完全宕机,然后再按原因分类进行故障排查。
确认是否存在用户本地无法连接外网的故障。
/etc/hosts.deny
文件,查看是否存在拦截IP,如果存在则删除此IP配置即可。在确保登录密码正确的情况下,确认之前是否曾重置过密码。检查重置实例密码后是否未重启实例,如果存在实例密码修改记录,但无重启实例记录,则参考以下操作步骤重启实例:
中间网络包括网络检查和端口检查。
无法正常远程连接Linux实例时,需要先检查网络是否正常。
网络检查正常后,进一步检查端口是否正常。
vi /etc/ssh/sshd_config
说明:服务监听能使用的端口范围为0到65535,错误配置监听端口会导致远程桌面服务监听失败。
/etc/init.d/sshd restart
说明:也可执行
service sshd restart
命令,重启SSH服务。
python -m SimpleHTTPServer [$Port]
说明:ECS的安全组规则中默认放行22端口。修改了远程桌面的端口后,需要在安全组规则中放行修改后的端口号。
telnet [$IP] [$Port]
说明:系统显示类似如下,例如执行
- [$IP]指Linux实例的IP地址。
- [$Port]指Linux实例的SSH端口号。
telnet 192.168.0.1 22
命令,正常情况下,系统会返回服务端中SSH的软件版本号。检查安全组配置,是否允许远程连接的端口。
如果根据前述问题场景进行排查和处理后,还是无法正常登录。则建议按照如下步骤逐一排查和分析:
tailf /var/log/secure
ssh -v 192.168.0.1
命令,获取Linux环境中详细的SSH登录交互日志。 ssh -v [$IP]
service sshd status正常情况下会返回SSH服务的运行状态及进程PID,系统显示类似如下。
service sshd restart
[root@centos ~]# service sshd status
openssh-daemon (pid 31350) is running...
[root@centos ~]# service sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
netstat -ano | grep 0.0.0.0:22正常情况下会返回相应端口监听信息,系统显示类似如下。
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN off (0.00/0/0)
ssh 127.0.0.1
若用阿里云提供的远程连接功能仍无法成功连接实例,请尝试重启实例。重启操作会使实例停止工作,从而中断业务,请谨慎执行。
说明:重启实例前,需给实例创建快照,用于数据备份或者制作镜像。创建快照的方法请参见创建快照。