为什么我无法登录 Linux 服务器并出现网络错误:连接超时

为什么我无法登录 Linux 服务器并出现网络错误:连接超时

大家好,我在通过 ssh 连接到 Red Hat Enterprise Linux 服务器时遇到问题,出现以下错误:“网络错误:连接超时”

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

答案1

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

  • ping -n $主机名
  • telnet $IP_ADDRESS 22

ping 将测试名称到 IP 的解析,以及您是否可以 ping 该主机。如果您可以 ping 它,则说明您已与其建立网络连接。虽然无法 ping 它并不意味着您无法与其建立连接,因为 ping 可能会被过滤掉。

使用 telnet 中 ping 的 IP 地址并 telnet 到 SSH 端口。如果这需要很多秒并且报告“连接超时”,那么确实好像有防火墙挡住了路。

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

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

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

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

iptables -I INPUT -m tcp -p tcp --dport 22 -j ACCEPT

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

话虽如此,您可能需要考虑设置 VPN。这样,您的远程 IP 是什么就无关紧要了,您可以使用证书或密钥来验证 VPN 连接,然后在 VPN 上获取一个允许进入防火墙和 TCP 包装器的静态 IP 地址。

相关内容