无法连接Linux实例的排查方法

本文主要介绍无法远程登录Linux实例的排查方法。

问题原因

下图为SSH远程登录的关联因素示意图,由此可见,SSH远程登录失败的可能原因较多。如PAM安全框架、安全组、SSH配置等。请您根据实际情况,通过相应的排查方法,排查并解决无法远程连接Linux实例的问题。

快速登录Linux实例

如果您遇到紧急情况,需要尽快登录Linux实例,请参见以下操作步骤,先检查ECS实例的状态,然后通过云助手向Linux实例发送命令或通过VNC登录实例,具体步骤如下:

步骤一:检查ECS实例状态

无论何种原因导致无法远程登录ECS实例,请先检查实例的状态。只有当ECS实例为运行中状态时,才能对外提供业务访问。检查步骤如下:

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择实例与镜像 > 实例

  3. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

  4. 实例列表页面,查看目标实例的实例状态健康状态,并选择合适的登录方式。

    • 如果ECS实例生命周期状态和实例健康状况为下表所示,您可以继续步骤二:通过VNC登录ECS实例操作。

      实例生命周期状态

      实例健康状况

      登录方式

      启动中(Starting)

      初始化中(Initializing)

      VNC

      运行中(Running)

      初始化中(Initializing)

      VNC

      无异常(OK)/操作系统运行存在异常(Impaired)

      VNC和Workbench

      关机中(Stopping)

      数据不足(InsufficientData)

      VNC

      已关机(Stopped)

      InsufficientData

      无法登录

    • ECS实例生命周期状态为除上表所示的其他状态时,您可以根据实例的状态,选择对应的解决方案。

      更多ECS实例生命周期状态,请参见实例的生命周期

步骤二:通过VNC登录ECS实例

如果云助手无法使用或者无法满足您的使用需求,您还可以通过阿里云VNC工具进行远程登录,使用方法如下:

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择实例与镜像 > 实例

  3. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

  4. 实例列表页面,找到需要连接的实例,在操作列中,单击远程连接

  5. 在弹出的远程连接对话框中,单击展开其他登录方式,然后单击通过VNC远程连接对应的立即登录

    image.png

  6. 登录实例操作系统。

    1. 输入登录用户(例如root、ecs-user),然后按Enter键。

    2. 输入实例登录密码,然后按Enter键。

      说明

      登录Linux实例时界面不会显示密码的输入过程,请您确保输入的密码正确。

步骤三:通过云助手向Linux实例发送命令

您可以尝试通过阿里云云助手向Linux实例发送命令,云助手的使用步骤如下:

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择实例与镜像 > 实例

  3. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

  4. 实例列表页面,找到待操作的实例,在操作中,选择image > 远程连接 > 发送命令

  5. 输入您需要执行的命令,单击执行,即可在未登录Linux实例的情况下执行命令。

    更多有关云助手的信息,请参见云助手概述

    发送命令

没有明确的报错信息

在远程连接失败时,如果您没有收到系统返回的报错信息,并且ECS实例是运行中状态,然后再根据以下步骤进行排查:

步骤一:使用阿里云Workbench工具测试远程登录

通过阿里云提供的Workbench工具进行远程登录,Workbench工具在远程登录出现异常时会返回具体的错误信息及解决方案。测试步骤如下:

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择实例与镜像 > 实例

  3. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

  4. 在实例列表页面,找到需要连接的实例,单击对应操作列下的远程连接

  5. 在弹出的远程连接对话框中,单击通过Workbench远程连接对应的立即登录

  6. 测试是否可以远程登录。

    Workbench工具将自动填充登录目标实例所需的基本信息,请确认基本信息的正确性并输入登录的用户名和认证信息。并根据以下结果进行处理:通过Workbench远程登录Linux实例的具体操作,请参见通过Workbench远程登录Linux实例

    • 如仍然无法登录,Workbench工具会返回错误提示和解决方案,请根据系统提示进行处理。处理完毕后重新使用Workbench工具进行远程登录测试。为了便于您解决问题,列举Workbench工具使用时常见的异常问题: Workbench远程连接问题(Linux)

    • 如可以通过Workbench工具正常登录,说明目标实例上的SSH服务正常运行,即排除SSH服务端异常的可能性,继续执行步骤二:检查网络进行排查。

步骤二:检查网络

无法正常远程连接Linux实例时,需要先检查网络是否正常。

  1. 用其他网络环境中,不同网段或不同运营商的电脑连接对比测试,判断是本地网络问题还是服务器端的问题。

    • 如果是本地网络问题或运营商问题,请联系本地IT人员或运营商解决。

    • 如果是网卡驱动存在异常,请重新安装。

  2. 在本地客户端使用ping命令测试与实例的网络连通性。

步骤三:检查端口和安全组

检查安全组配置是否允许远程连接的端口。

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择实例与镜像 > 实例

  3. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

  4. 实例列表页面,单击对应的实例ID。

  5. 安全组页签下,单击安全组操作列的管理规则

  6. 安全组规则页面,您可以选择以下任意一种方式添加安全组规则,具体操作,请参见添加安全组规则

    • 方式一:快速添加安全组规则

      • 授权策略允许

      • 端口范围SSH(22)

      • 授权对象0.0.0.0/0(代表所有IP访问)

    • 方式二:手动添加安全组规则

      • 授权策略允许

      • 优先级1(代表安全规则中优先级最高,数字越小优先级越高)

      • 协议类型自定义(TCP)

      • 端口范围SSH(22)

      • 授权对象0.0.0.0/0(代表所有IP访问,也可根据需要,自定义设置授权对象)

  7. 使用以下命令,进行端口测试,判断端口是否正常。

    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负载、带宽不足或内存不足导致。

  1. 根据是否存在CPU负载过高情况,选择相应操作。

    • 存在CPU负载过高情况。

      若应用程序有大量的磁盘访问、网络访问行为、高计算需求,CPU负载过高是正常结果。建议您升配实例规格来解决资源瓶颈问题,具体操作,请参见升降配方式概述

      说明

      CPU负载过高的解决方法,请参见Linux系统CPU负载的查询和案例分析

    • 不存在CPU负载过高情况,请继续下一步排查。

  2. 排查是否存在公网带宽不足问题。

    无法远程连接可能是公网带宽不足导致的,具体排查方法如下。

    1. 登录ECS管理控制台

    2. 在左侧导航栏,选择实例与镜像 > 实例

    3. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

    4. 实例列表页面,单击对应的实例ID,在配置信息区域,查看公网带宽

      如果服务器带宽为0 Mbps,说明购买实例时没有购买公网带宽,您可以通过升级带宽解决,具体操作,请参见修改公网带宽峰值

  3. 排查是否存在内存不足问题。

    远程连接Linux实例后,不能正常显示桌面并直接退出,也没有错误信息提示。这种情况可能是服务器内存不足导致,需要检查服务器的内存使用情况。具体操作如下。

    1. 使用VNC方式登录Linux实例。

      具体操作,请参见通过密码认证登录Linux实例

    2. 查看内存使用情况,如果存在内存不足情况,建议您升配实例规格来解决资源瓶颈问题,具体操作,请参见升降配方式概述

存在明确的报错信息

远程登录失败时,系统通常会返回报错信息。您可以根据报错信息,快速定位问题原因及解决方案。

PAM安全框架

Linux系统的PAM安全框架可以加载相关安全模块,对云服务器的账户策略、登录策略等进行访问控制。如果相关配置存在异常,或触发了相关策略,就可能会导致SSH登录失败。根据不同报错信息,可参见如下常见案例进行解决:

Linux实例系统环境配置

Linux内的系统环境,例如中毒、账户配置、环境变量配置等,如果出现异常,也可能会导致SSH登录失败。根据不同报错信息,可参见如下常见案例进行解决:

SSH服务及参数配置

SSH服务的默认配置文件为/etc/ssh/sshd_config。配置文件中的相关参数配置异常,或启用了相关特性或策略,也可能会导致SSH登录失败。根据不同报错信息,可参见如下常见案例进行解决:

SSH服务关联目录或文件配置

SSH服务基于安全性考虑,在运行时,会对相关目录或文件的权限配置、属组等进行检查。过高或过低的权限配置,都可能会引发服务运行异常,进而导致客户端登录失败。根据不同报错信息,可参见如下常见案例进行解决:

SSH服务密钥配置

SSH服务采用非对称加密技术,对所传输的数据进行加密。客户端及服务端会交换和校验相关密钥信息的有效性。根据不同报错信息,可参见如下常见案例进行解决:

使用SSH登录ECS实例时提示“Host key verification failed”错误