因端口配置错误导致使用SSH或Workbench无法连接ECS实例怎么办?

更新时间:
复制 MD 格式

问题现象

使用SSHWorkbench无法连接ECS实例,通过实例健康诊断显示:该实例sshd进程当前正在监听的地址和端口与配置的地址和端口不一致,可能导致SSH连接预期的地址和端口时失败。

可能原因

sshd进程当前正在监听的地址和端口不在sshd的配置文件/etc/ssh/sshd_config中,导致无法连接ECS实例。

解决方案

您可以参考以下步骤,根据实际需要修改SSH服务监听配置的地址和端口来解决上述问题。

  1. 使用VNC远程连接ECS实例。
    具体操作,请参见选择ECS远程连接方式
    说明 通过SSH无法登录ECS实例时,只能通过VNC登录实例进行操作。
  2. 查看sshd_config配置文件中端口号与sshd进程实际占用端口号是否一致。

    如果不一致,请继续执行步骤3修改sshd_config配置文件。

    • 查看sshd_config配置的端口号:
      sshd -T
      如以下示例,sshd_config配置文件中端口号为23。
      [xxx@iZbpxxx ~]# sshd -T
      port 23
      addressfamily inet
      listenaddress 0.0.0.0:23
      usepam yes
      logingracetime 120
      x11displayoffset 10
      x11maxdisplays 1000
      maxauthtries 6
      maxsessions 10
      clientaliveinterval 0
      clientalivecountmax 3
      streamlocalbindmask 0177
      permitrootlogin yes
      ignorerhosts yes
      ignoreuserknownhosts no
    • 查看sshd进程实际占用端口号:
      netstat -ntlp |grep sshd
      说明 如以上命令无法运行,请执行ss -tlnp | grep sshd
      如以下示例,配置文件中sshd进程实际占用端口号为22,与sshd_config配置文件中端口号23不同,则需要执行步骤3修改sshd_config配置文件。
      [root@rhel8xxx        ]# netstat -ntlp |grep  sshd
      tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      5091/sshd
      tcp6       0      0 :::22                   :::*                    LISTEN      5091/sshd
  3. 修改sshd_config配置文件。
    1. 打开sshd_config配置文件。
      vim /etc/ssh/sshd_config
    2. i键进入编辑模式。
    3. 根据业务需要,修改sshd_config配置文件中的端口号。
      sshd_config配置文件中端口号应与sshd进程实际占用端口号相同,本文示例中,需删除Port 23
      #Port 22
      Port 23
      #AddressFamily any
      #ListenAddress 0.0.0.0
      #ListenAddress ::
      HostKey /etc/ssh/ssh_host_rsa_key
      HostKey /etc/ssh/ssh_host_ecdsa_key
      HostKey /etc/ssh/ssh_host_ed25519_key
    4. 修改完成后按Esc键,输入:wq后按Enter键,保存并退出。
  4. 重启sshd服务。
    systemctl restart sshd