有一台服务器无法通过 SSH(端口 22)连接。请考虑以下三台运行 CentOS 5.x 的服务器:
规格
- server1-SELinux 强制执行
- server2-SELinux 允许
- server3-SELinux 强制执行
SSH 连接
- server1 可以通过 SSH 访问 server1 和 server3,但不能访问 server2
- server2 可以访问 server2,但不能访问 server1 或 server3
- server3 可以通过 SSH 访问 server1 和 server3,但不能访问 server2
故障排除
由于 server2 可以通过 ssh 访问自身,因此似乎 ssh 正常工作。从 server2 开始,已测试或验证了以下内容。
- /etc/sysconfig/iptables 打开了端口 22,并且与其他服务器相同。
- 已验证 openssh-server 和 openssh-client 已安装
- 验证服务 sshd 状态是否正在使用 chkconfig 运行
- 使用 netstat -ptan 和 netstat -nlpa 验证 sshd 是否正在使用 pid 运行
- 已验证 SELinux 是否允许
- 甚至尝试在防火墙关闭的情况下进行连接:service iptables stop
- 查看了各种日志以确定是否有任何明显不允许 ssh 访问的内容。只能找到访问为“连接被拒绝”的消息。
除了升级到 CentOS6 或应用所有更新之外,我还应该考虑其他什么来解决问题?
谢谢。
答案1
Server2 是否与 Server1 和 Server2 位于同一 LAN 上?如果不是,则可能是网络问题。我会将 SSH 客户端放在与 Server2 相同的网络、相同的交换机上,然后从那里开始工作。我本想在评论中询问,但无论它是否适用于这种情况,这都是一个很好的故障排除步骤。
答案2
“连接被拒绝”通常意味着没有服务器进程在监听客户端尝试连接的 TCP 端口。如果 Server2 可以连接到自身,则似乎 server1 和 server3 上的客户端正在尝试连接到与该主机上的 SSH 服务器正在监听的 IP 地址和端口不同的 IP 地址和端口。
检查 server2 上的 sshd 配置文件。使用 OpenSSH,您正在寻找ListenAddress
或Port
行。您可能会发现它设置为仅在本地主机接口上侦听,或者服务器是多宿主的并且它只侦听一个接口,或者它使用非标准端口号(标准 SSH 端口为 22)。
如果 server2 上的 SSH 服务器看起来正确,请检查 server1 和 server3 上的客户端配置。找出客户端实际用于连接服务器的 IP 地址和端口。