packet_write_wait:连接到xxx.xxx.xxx.xxx:管道损坏

时间:2016-03-17 20:19:54

标签: shell ssh terminal google-compute-engine

终端抛出此错误以及如何解决它是什么意思?

packet_write_wait: Connection to xxx.xxx.xxx.xxx: Broken pipe

今天刚刚发生。经过一年的正常工作。 我的终端在某个时间保持断开状态。我已经在google上搜索了,但大部分是关于"写入失败:断管。"

多年来我已经解决了这个问题。我今天刚刚发现了这个新烦恼的问题

4 个答案:

答案 0 :(得分:3)

我也遇到过这个问题,花了几天时间试图将其分成两部分。

与指定一样,使用SSH KeepAlive参数(ClientAliveIntervalClientAliveCountMaxServerAliveIntervalServerAliveCountMax)或内核TCP参数(TCPKeepAlive开/关)无法解决问题

使用USB转以太网驱动程序和tcpdump后,我意识到问题是由于我使用的内核4.8。我将源(发送方)切换到4.4 LTS并且问题消失了(通过ssh和scp的rsync再次正常工作)。如果你愿意的话,目的地方可以保持在4.8,在我的用例中这是可行的(测试)。

在技术方面,由于我下面的wireshark转储,我们可以缩小一点问题。我们可以看到正在重置SSHv2协议的TCP通道(TCP的RST标志设置为1)导致连接中止。我还不知道该RST的原因。我需要从4.8.1到4.8.11进行一些二分法。 enter image description here

我不是说你的问题是由于内核4.8而特别是由于wrt。在您发布问题/消息的日期,您目前使用内核的可能性很高,而不是4.4。

答案 1 :(得分:2)

如果是ssh连接,那么您可能需要确保向服务器发送keepalive消息。

答案 2 :(得分:0)

ServerAliveInterval似乎是使连接保持活动状态的最常见策略。为防止管道破裂问题,这是我在.ssh/ssh_config文件中使用的ssh配置(可以命名为/etc/ssh/configsshd_config):

Host myhostshortcut
     HostName myhost.com
     User barthelemy
     ServerAliveInterval 60
     ServerAliveCountMax 10

答案 3 :(得分:-3)

通过另一个wifi连接。

我不知道为什么或如何运作,但确实如此。

原始海报sthapaun已经在评论中提到了这个解决方案,但我想补充一点,解决方案也适用于我。