阿里云

当前位置:主页 > 云帮助 > 阿里云 >

云服务器ECS无法连接Linux实例

来源:阿里云 作者:云计算整理 发布时间:2019-08-22 10:49

问题描述

阿里云服务器ECS用户无法连接Linux实例,解决方案

问题原因

无法连接Linux实例的原因如下图显示。

解决方案

无法连接ECS实例的排查思路如下所示。

  1. 使用管理终端登录实例
  2. 检查客户端本地网络是否异常
  3. 检查重置实例密码后是否未重启实例
  4. 检查Iptables配置是否异常
  5. 检查安全组公网规则是否异常
  6. 检查远程访问端口配置是否异常
  7. 检查CPU负载是否过高
  8. 尝试重启实例

步骤一:使用管理终端登录实例

云服务器ECS无论何种原因导致无法远程连接实例,请先尝试用阿里云提供的远程连接功能进行连接,确认实例还有响应,没有完全宕机,然后再按原因分类进行故障排查。

  1. 登录云服务器管理控制台,单击左侧导航栏中的 实例,然后在目标实例右侧单击 远程连接
  2. 在首次连接或忘记连接密码时,单击 修改远程连接密码,修改远程连接的密码。
  3. 然后通过远程连接密码连接实例。

步骤二:检查客户端本地网络是否异常

确认是否存在故障现象,如果存在,则参考本步骤解决问题,如果不存在,则执行下一步步骤。

故障现象

用户本地无法连接外网。

故障原因

可能是网卡驱动未开启或网卡配置有问题。

解决方法

检查网卡驱动,如果存在异常,则重新安装。使用管理终端登录实例,查看/etc/hosts.deny文件,查看是否存在拦截IP,如果存在则删除此IP配置即可。

步骤三:检查重置实例密码后是否未重启实例

确认是否存在故障现象,如果存在,则参考本步骤解决问题,如果不存在,则执行下一步步骤。

故障现象

存在实例密码修改记录,但无重启实例记录。

故障原因

可能是修改了实例密码,但是未重启实例。

解决方法

  1. 登录云服务器管理控制台,单击左侧导航栏中的 实例
  2. 在页面顶部的选择对应的地域,在目标实例右侧单击 更多 > 实例状态 > 重启,再单击 确认 即可。

步骤四:检查Iptables配置是否异常

提示:本文以Centos6系统为例。

确认是否存在故障现象,如果存在,则参考本步骤解决问题,如果不存在,则执行下一步步骤。

前提条件

您只有在已授权可关闭Iptables的情况下,才能进行该项排查。


故障现象

SSH无法连接,关闭Iptables后连接恢复。

解决方法

执行以下操作,调整Iptables的配置策略。

  1. 使用管理终端登录实例,执行如下命令,查看防火墙规则。
     
    iptables -nvL --line-number
    注:
    • L参数:查看当前表的所有规则,默认查看的是filter表,如果要查看nat表,可以加上“-t NAT”参数。
    • n参数:不对IP地址进行反向解析,加上该参数显示速度会快很多。
    • v参数:输出详细信息,包含通过该规则的数据包数量、总字节数及相应的网络接口。
  2. 若之前已设置过规则策略,执行如下命令,将原有的iptables文件保存一份,避免之前设置的策略丢失。
     
    cp -a /etc/sysconfig/iptables /etc/sysconfig/iptables.bak
  3. 执行如下命令,清空服务器上所有的规则。
     
    iptables -F
  4. 执行如下命令,设置通往INPUT方向所有的请求都拒绝。
    提示:如果是线上业务请勿直接操作,该操作会导致业务直接中断。
     
    iptables -P INPUT DROP
  5. 执行如下命令,放行22号端口,否则会导致无法远程。
     
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
  6. 执行如下命令,指定IP访问22号端口。
     
    iptables -I INPUT -s [$IP] -p tcp --dport 22 -j ACCEPT
    注:[$IP]为请求端的IP地址。
  7. 执行如下命令,查看添加的规则是否生效。
     
    iptables -L
    系统显示类型如下。
  8. 执行如下命令,保存添加的规则。
     
    iptables-save > /etc/sysconfig/iptables
  9. 执行如下命令,在设置后规则后重启Iptables。
     
    service iptables restart
    注:也可执行如下命令,重启Iptables。
    /etc/init.d/iptables restart
  10. 操作完成后,执行如下命令,重启服务器。
     
    reboot
  11. 使用SSH进行远程连接,确认能正常连接。

步骤五:检查安全组公网规则是否异常

确认是否存在故障现象,如果存在,则参考本步骤解决问题,如果不存在,则执行下一步步骤。

故障现象

无法ping通ECS实例,在排除Iptables和网卡IP配置问题且回滚系统后,仍然无法ping通。

故障原因

可能是ECS实例安全组默认的公网规则被删除。

解决方法

重新配置ECS实例的安全组公网规则,具体操作请参见ECS实例安全组默认的公网规则被删除导致无法ping通

步骤六:检查远程访问端口配置是否异常

确认是否存在故障现象,如果存在,则参考本步骤解决问题,如果不存在,则执行下一步步骤。

故障现象

SSH远程无法连接,远程访问端口非默认端口。


故障原因

可能的原因是更改了远程访问端口配置,且防火墙未对自定义端口放开。


解决方法

客户端无法正常登录实例时,建议先使用不同的SSH客户端基于相同账户信息进行登录测试。如能正常登录,则判断是客户端配置问题,需对客户端配置做排查分析。

提示

  • 您可以通过自动测试默认端口来检测远程访问端口的问题。
  • 服务监听能使用的端口范围为0到65535,错误配置监听端口会导致远程桌面服务监听失败。
  1. 使用管理终端登录实例,执行如下命令,使用Linux自带的telnet工具测试现有监听端口的连通性。
     
    telnet [$Host] [$Port]
    注:[$Host]是目标服务器IP,[$Port]是待测试端口号。
  2. 执行如下命令,编辑SSH配置文件。
     
    vi /etc/ssh/sshd_config
  3. 找到“#port 22”所在行,发现默认端口为22,可以把前面的“#”删除,然后将22改为其它的端口,再保存退出即可。
  4. 执行如下命令,重启SSH服务。
     
    /etc/init.d/sshd restart
    注:也可执行如下命令,重启SSH服务。
    service sshd restart
  5. 使用Python自带的Web服务器用于临时创建新的监听端口进行测试。
     
    python -m SimpleHTTPServer [$Port]

步骤七:检查CPU负载是否过高

确认是否存在故障现象,如果存在,则参考本步骤解决问题,如果不存在,则执行下一步步骤。

故障现象

CPU负载过高导致系统无法进行远程连接。


解决方法

您无法主动监控系统内部的程序运行状态,但是可以借助云监控进行查看。

  1. 登录云监控控制台,依次选择 主机监控 > 进程监控
  2. 查看应用运行情况,排除CPU负载过高的原因,如何查看CPU负载问题,请参见Linux系统ECS实例CPU使用率较高的排查思路
    提示:在某个时间段CPU负载过高可能导致远程连接失败,建议您查询程序或者实例资源是否不满足现有要求。

步骤八:尝试重启实例

若用阿里云提供的远程连接功能仍无法成功连接实例,请尝试重启实例。重启操作会使实例停止工作,从而中断业务,请谨慎执行。

提示:重启实例前,需给实例创建快照,用于数据备份或者制作镜像。创建快照的方法请参见创建快照

  1. 登录云服务器管理控制台,单击左侧导航栏中的 实例
  2. 在页面顶部的选择对应的地域,在目标实例右侧单击 更多 > 实例状态 > 重启,再单击 确认 即可。