SSH连接因“写入失败:管道损坏”而冻结


12

我正在从Ubuntu 11.04计算机通过SSH连接到CentOS 5.5机器。

当连接处于活动状态(即没有滞后或丢失)时,该连接似乎可以按预期工作,但是如果保持一段时间不活动,它将冻结并失去响应。最终,将返回错误消息“写入失败:管道损坏”,我将回到本地计算机的提示符下。

我可以做些什么来帮助调试,找出正在发生的问题并解决该问题?作为开发人员,这使我的生活变得痛苦,不得不不断地重新建立联系。

Answers:


15

看起来CentOS框的SSHD配置未设置为执行客户端KeepAlive。

将这两行放在您的CentOS sshd配置(/ etc / ssh / sshd_config)中,重新启动它,然后享受吧!

KeepAlive yes
ClientAliveInterval 60

当您使用它时,我建议使用gnu screen使您的会话在CentOS端保持活动状态。


1
KeepAlive已重命名为TCPKeepAlive,可以保留默认值yes。ClientAliveInterval应该足够。请参阅man sshd_config
ypid 2015年

9

实际的答案几乎总是在路径中具有某种NAT设备,通常是防火墙,其状态表具有相当大的超时时间。因为您使ssh连接保持空闲一段时间,所以NAT设备“忘记”内部地址和源端口号以及临时外部NATted地址和端口号之间的映射。

当您稍后尝试在该ssh窗口中执行某项操作时,将为您分配一个新的临时地址/端口对,目的ssh服务器不知道该地址/端口对,并且不响应。稍后,达到一些本地超时,本地计算机将断开连接。

实际的解决方法是完全按照yuriismaster的建议进行操作:启用KeepAlives(确保有规律的流量“触发”该状态表条目),并screen在远程使用(在万一事情掉落时保留状态)。我之所以只发布此答案,是因为您询问正在发生什么以及如何处理。希望这可以澄清为什么 yuriismaster的建议是好的。


完全有道理!我们确实为此盒配备了带有DMZ设置的NAT。我将尝试超时配置,看看是否对我有用。谢谢:)
Stephen RC

我接受您的要求,因为您帮助我了解了问题背后的原因。但是功劳需要转到@yuriismaster进行修复。
斯蒂芬RC,

瓦洛林:的确如此,他是第一位。坦率地说,我认为他比我更值得接受。但这是您的问题,因此应该按照您认为合适的方式进行。无论哪种方式,都感谢您的反馈。
MadHatter
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.