我无法使用 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.11
和10.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,请使用以下步骤。
-
使用 IPMI 远程控制台登录到裸机服务器。
-
以 root 用户身份编辑
/etc/ssh/sshd_configvi/etc/ssh/sshd_config
中的sshd_config
文件。 -
在包含
PermitRootLogin yes
的文件的“认证”部分中添加一行。 此行可能使用 "#" 注释掉。 如果将其注释掉,那么除去 "#"。#LoginGraceTime 2m PermitRootLogin yes #StrictModes yes #MaxAuthTries 6 #MaxSessions 10
-
保存更新后的
/etc/ssh/sshd_config
文件。 -
重新启动 SSH 服务。
- 对于 Ubuntu 或 Debian Linux 运行
sudo systemctl restart ssh.service
。 - 对于 RHEL 和 CentOS Linux,请运行
sudo systemctl restart sshd.service
。
- 对于 Ubuntu 或 Debian Linux 运行
-
在服务重新启动后,登录。
-
-
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 服务未在运行,请通过以下步骤将其启动。-
使用下列其中一个命令重新启动服务。
- 对于 Ubuntu 或 Debian Linux 运行
sudo systemctl start ssh.service
。 - 对于 RHEL 和 CentOS Linux,请运行
sudo systemctl start sshd.service
。
- 对于 Ubuntu 或 Debian Linux 运行
-
请验证 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
-