为什么我无法登录到网络错误的 linux 服务器:连接超时

use*_*154 3 linux ssh redhat

嘿伙计们,我在通过 ssh 连接到 Red Hat Enterprise linux 服务器时遇到问题,出现以下错误:“网络错误:连接超时”

服务器位于我应该可以访问的 VLAN 上,我可以 ping 它但我无法通过腻子或 WinSCP 连接到它,它侦听默认端口 22,我有一个动态 IP,每次我必须连接时到服务器,一位拥有静态 IP 的同事登录到它并将我的 IP 添加到 hosts.allow 文件,它起初工作正常,但最近它停止工作。我确定这不是 hosts.allow 问题,因为当我的 ip 不被允许时,我收到了不同的错误消息,例如:“服务器连接意外关闭”并试图在 5 秒内重新连接。现在错误是不同的,我认为它必须对网络的防火墙做些什么,我只是不明白为什么我以前可以使用不同的 IP 登录,现在我不能。

Sea*_*der 5

“连接超时”听起来像是防火墙问题。尝试将连接分解为在网络级别执行的各个步骤:

  • ping -n $主机名
  • 远程登录 $IP_ADDRESS 22

ping 将测试名称解析为 IP 并且您可以 ping 该主机。如果您可以 ping 通它,您就知道您可以连接到它。虽然无法 ping 它并不意味着您没有连接到它,因为 ping 可能会被过滤掉。

在 telnet 和 telnet 到 SSH 端口时使用 ping 中的 IP 地址。如果这需要几秒钟并报告“连接超时”,那么看起来确实有防火墙挡住了路。

正如您所说,如果 tcpwrappers 是问题所在,则可能是“连接意外关闭”的结果。如果 SSH 由于某种原因没有运行,您将收到“连接被拒绝”错误。

如果您在服务器上具有 root 访问权限,请检查主机防火墙iptables-save | less(如果不是 Linux,则使用类似方法)。如果它不在那里,您可能需要让运行网络检查防火墙的人检查那里可能存在的防火墙。

如果iptables-save什么都不返回,则可能意味着您没有以 root 身份运行它。但是,这也可能意味着没有规则。但是,如果它返回 20 行或更多行的输出,则可能存在防火墙。

您可以添加临时防火墙允许规则,以便您可以通过运行以下命令来测试防火墙是否有问题:

iptables -I INPUT -m tcp -p tcp --dport 22 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

这可能会允许 ssh 连接,除非防火墙存在更深层次的问题,例如更难诊断的错误 NAT 规则。您可以尝试使用诸如 (Fedora/CentOS/RHEL)“sudo service iptables stop”(Debian/Ubuntu)“sudo ufw disable”之类的命令禁用防火墙(尽管在 Debian/Ubuntu 上您可能运行的是 ufw 以外的其他程序,没有我知道的“标准”)。

也就是说,您可能要考虑的一件事是设置 VPN。这样,无论您的远程 IP 是什么,您都可以使用证书或密钥对 VPN 连接进行身份验证,然后在 VPN 上获取一个静态 IP 地址,该地址可以在防火墙和 TCP 包装器中使用。