CentOS Linux:一台服务器无法通过 SSH 访问,而其他服务器可以

CentOS Linux:一台服务器无法通过 SSH 访问,而其他服务器可以

有一台服务器无法通过 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,您正在寻找ListenAddressPort行。您可能会发现它设置为仅在本地主机接口上侦听,或者服务器是多宿主的并且它只侦听一个接口,或者它使用非标准端口号(标准 SSH 端口为 22)。

如果 server2 上的 SSH 服务器看起来正确,请检查 server1 和 server3 上的客户端配置。找出客户端实际用于连接服务器的 IP 地址和端口。

相关内容