IBM Cloud Docs
我无法使用 SSH 登录到裸机服务器?

我无法使用 SSH 登录到裸机服务器?

我无法使用 SSH 登录到裸机服务器。

如果无法使用 SSH 登录到裸机服务器,那么原因可能是以下原因之一。

  • VPN 未连接到裸机服务器-仅当您要使用 SSH 连接到专用 IP 时才适用。
  • 已针对 root 用户禁用 SSH 登录。
  • SSH 端口号已更改。
  • 操作系统防火墙正在阻止 SSH 流量。
  • 网络防火墙正在阻止 SSH 流量。
  • SSH 服务未在运行。

请使用下列其中一个解决方案来解决此问题。

  • VPN 未连接到裸机服务器

    要使用 SSH 登录到服务器的专用 IP,必须建立到 IBM Cloud® 的 SSL VPN 连接,如 IBM Cloud Virtual Private Networking 入门 中所述。

    您可以通过向位于 10.0.80.1110.0.80.12 的 IBM Cloud® DNS 解析器 IP 发送 ping 来验证 VPN 连接是否正常工作。 如果成功,那么 VPN 连接正在工作。

  • 已针对 root 用户禁用 SSH 登录。

    出于安全原因,可能会在服务器的 SSH 配置 (/etc/ssh/sshd_config) 中禁用 root 用户通过 SSH 进行的远程登录。

    建议您不要为 root 用户启用远程 SSH 登录。 请改为创建非 root 用户以进行远程 SSH 登录。 但是,如果要为 root 用户启用到服务器的 SSH,请使用以下步骤。

    1. 使用 IPMI 远程控制台登录到裸机服务器。

    2. 以 root 用户身份编辑 /etc/ssh/sshd_configvi/etc/ssh/sshd_config 中的 sshd_config 文件。

    3. 在包含 PermitRootLogin yes 的文件的“认证”部分中添加一行。 此行可能使用 "#" 注释掉。 如果将其注释掉,那么除去 "#"。

      #LoginGraceTime 2m
      PermitRootLogin yes
      #StrictModes yes
      #MaxAuthTries 6
      #MaxSessions 10
      
    4. 保存更新后的 /etc/ssh/sshd_config 文件。

    5. 重新启动 SSH 服务。

      • 对于 Ubuntu 或 Debian Linux 运行 sudo systemctl restart ssh.service
      • 对于 RHEL 和 CentOS Linux,请运行 sudo systemctl restart sshd.service
    6. 在服务重新启动后,登录。

  • SSH 端口号已更改

    出于安全原因,管理员可能已将使用的 SSH 端口从缺省端口 22 更改为其他端口号。

    您可以通过 IPMI 远程控制台登录到服务器来检查是否为 SSH 配置了端口号。 然后,在 /etc/ssh/sshd_config 文件中搜索包含 "Port" 的行。

    如果端口已从缺省值更改,请运行以下命令,其中 IP_ADDRESS 是服务器的 IP 地址,PORT_NUMBER 是新端口号。

    ssh root@IP_ADDRESS -p ssh-PORT_NUMBER
    
  • 操作系统防火墙正在阻止 SSH 流量

    一个或多个 iptables 条目可能阻止 SSH 流量。 您可以临时禁用 iptables 以验证操作系统防火墙是否存在问题。 要禁用 iptables,请进行下列其中一个编辑。

      ```sh {: pre}
      # /etc/rc.d/init.d/iptables stop or
      # /etc/rc.d/init.d/ip6tables stop
    
      # chkconfig iptables off or
      # chkconfig ip6tables off
      ```
    

    如果在禁用 iptables 后可以使用 SSH 访问服务器,那么需要查看 iptables 规则并进行任何相应的更改。

  • 网络防火墙正在阻止 SSH 流量

    防火墙可能阻止了到服务器的 SSH 流量。

    您可以通过运行从本地工作站到裸机服务器的 traceroute 来测试防火墙是否阻止流量。 请注意 traceroute 停止的 IP 地址。 如果这是您正在使用的防火墙或网关的 IP 地址,那么该 IP 地址可能阻止访问。 您可以联系防火墙管理员以获取指导。

    测试防火墙是否是问题的根源的另一种方法是暂时绕过防火墙,然后使用 SSH 登录到服务器。 如果可以登录,请与防火墙管理员联系以获取指导。

  • SSH 服务未在运行

    您可以通过使用 IPMI 远程控制台登录到裸机服务器并运行 sudo systemctl status sshd 来验证 SSH 服务是否正在运行。 如果 SSH 服务未在运行,请通过以下步骤将其启动。

    1. 使用下列其中一个命令重新启动服务。

      • 对于 Ubuntu 或 Debian Linux 运行 sudo systemctl start ssh.service
      • 对于 RHEL 和 CentOS Linux,请运行 sudo systemctl start sshd.service
    2. 请验证 SSH 服务是否正在侦听并且它是否是正确的端口。 该端口是缺省端口 22 或 SSH 服务正在使用的任何端口。 使用以下命令。

      netstat -anlp | grep ssh
      

    以下示例使用端口 22。

     netstat -anlp | grep ssh
    
     tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1125/sshd