我在家使用 MacBook Pro,并定期通过 ssh 连接到实验室的机器。然而,在过去的 3-4 天里,每当我通过 SSH 连接到实验室的机器时,我都会收到“写入失败:管道损坏”错误,而在我进行 ssh 后几乎不到 2 分钟。
事实上,几天前一切都运转良好,这让我感到困惑,如果能提供任何帮助让一切恢复正常,我将不胜感激。
答案1
这看起来像是网络问题。
查询某些网络设备是否已更改或已重新配置。告诉您的网络管理员您在 ssh 登录时遇到问题,防火墙可能存在配置错误。尝试从其他机器登录或登录到其他机器以改进诊断。
这些症状的可能原因之一是 IP 地址冲突。检查客户端和服务器从哪里获取 IP 地址。如果你继续ping server.example.com
跑步,是否有助于延长连接时间?如果是这样,则存在 IP 地址冲突。 (这ping
很有帮助,因为它会不断告诉路由器将 IP 数据包路由到您的计算机 - 但如果另一台计算机在您之前发送 ARP 回复,您仍然会失去连接。)如果这是问题所在,您需要修复它:安排其中一台使用相同地址的机器使用不同的地址。
另请检查您计算机上的路由表。确保发送至服务器的数据包路由至正确的接口。 (虽然错误的路由表通常会导致连接根本无法工作,但有一种边缘情况,其症状如您所描述的那样:如果您通过 DHCP 获取地址,并且 DHCP 服务器也是您正在联系的服务器 — DHCP 服务器的地址将被路由到所需的接口,直到您的 ARP 缓存过期。)
答案2
这可能是由于数据包丢失造成的。类似的工具mtr
可以帮助您诊断路由中的哪一台主机导致问题。这里您将找到在 Mac OS X 上安装它的说明。
答案3
我在总部的一些服务器上出现了这个问题,并使用以下方法解决了它:
TCPKeepAlive yes
ServerAliveInterval 5
在 ssh 中配置文件 (~/.ssh/config or /etc/ssh/ssh_config
)。
后来我才发现,这是因为为了优化办公室之间的通信而安装的一些硬件造成了干扰。
答案4
我已经解决了 Mac OS X 中的问题,我已经更改了
#ClientAliveInterval 0
到
ClientAliveInterval 300
在/etc/sshd_config
以下这,然后重新启动机器,完成。