packet_write_wait管道破裂甚至没有运行?


26

这个流血的错误使我的头痛每天都在变得越来越大。我从未遇到过像这样的情况。

好吧,我成功通过SSH身份验证后,做了几件事,然后我的SSH连接突然掉了!!?

这是我的错误信息: packet_write_wait: Connection to XXX.XX.XX.XXX: Broken pipe

我希望我的错误消息是这样的:Write Failed: broken pipe很多,相信我!

我在Internet上尝试了很多解决方案,例如添加了ServerAliveInterval,ServerAliveCountMax,ClientAlive...。

有人说:将您的TCPKeepAlive设置为no,添加ServerAlive bllah blah笨蛋。我也这样做,但仍然是同样的错误。

直到这一刻,我都没有运气。

任何帮助将不胜感激。


2
如果您在公司环境中,请与防火墙管理员联系,以查看他们在进行某种更改后是否正在更新规则和/或重新启动防火墙。如果发生在您的个人服务器上,则需要提供有关发生这种情况时在sshd服务器端正在执行的操作的更多信息。Broken pipe通常表示由于某种原因导致网络断开连接。
MelBurslan '16

我刚刚搬家,而新的联系正在不断发生。Cox Cable是我的ISP,并且我有一个Netgear C6300BD电缆调制解调器在安装时的默认设置下运行。这曾经发生在我的旧位置,我无法解决。它持续了几个月,并最终停止了发生。我忘记了到今天为止多么痛苦和无法解决。
T. Brian Jones

我感到你很痛苦。在将所有硬件分解成小块之前,我是最后的选择。这不应该是一个相当简单的协议吗?
DerpyNerd'5

我在虚拟化Linux上遇到了同样的错误,该问题解决了,将以太网适配器更改为桥接
Abel Barrios

Answers:


8

亲爱的2018年及以后的读者,

让我向您展示MelBurslan的评论,

如果您在公司环境中,请与防火墙管理员联系,查看他们在进行某种更改后是否正在更新规则和/或重新启动防火墙。如果发生在您的个人服务器上,则需要提供有关发生这种情况时在sshd服务器端正在执行的操作的更多信息。管道损坏通常意味着由于某种原因网络断开了连接。

因此,基本上,如果您尝试ssh username@0.0.0.0通过VPN(企业环境)使用。然后,此错误必须一遍又一遍地存在。

到目前为止,我发现的唯一解决方案mobile-shell。感谢创建它的人。

您将需要安装mosh-server在目标服务器(要切换到的服务器)和mosh-client主机中。

我认为,当您的数据包丢失时,它将自动重新连接,这非常酷,可以满足我们的所有需求。

祝你快乐!


3

我发现这是我的VMware Guest安装程序上的IPQoS选项问题。在VM上,我将IPQoS的〜/ .ssh / config值设置为默认值“ IPQoS af21 cs1”,该值是用于交互式第一个的低延迟数据,而对于第二个非交互式的则是较低的工作量。为af21设置新值是我的解决方案:

Host *
     IPQoS throughput

为我工作,否则可以使用MoSH,但是mosh不能以便捷的方式处理代理设置,因此我坚持使用ProxyJump命令


有趣,它可以在命令行中运行(如您在ubuntu上的帖子中所述),但在配置文件8-D中
却不可用

1

首先,请确保您的问题与无关。

如果没有,但问题仍然存在,请继续阅读。

我也遇到了这个问题,花了几天尝试将其一分为二。

如指定的那样,使用SSH KeepAlive参数或内核TCP参数(TCPKeepAlive开/关)无法解决问题。

在使用USB转以太网驱动程序和TCP转储之后,我意识到问题出在内核4.8。我将源(发送端)切换为4.4 LTS,问题消失了(rsync,scp再次正常工作)。如果需要,目标端可以保持在4.8上,在我的用例中,它正在运行(经过测试)。

在技​​术方面,由于我在下面进行的wireshark转储,我们可以缩小问题的范围。我们可以看到正在重置SSHv2协议的TCP通道(TCP的RST标志设置为1),导致连接中止。我还不知道RST的原因。为此,我需要从4.8.1到4.8.11进行平分。在此处输入图片说明

我并不是说您的问题是由于4.8内核引起的,而是wrt。在您发布问题/消息的日期,您可能一直在使用实际上是错误的内核版本。

最初在StackOverflow上回答。


内核不是问题,因为我一直在使用4.4 LTS。@MelBursan在问题的评论中回答了这里的真正问题。我使用VPN的互联网连接,这就是原因。解决方案:mosh.org
Toan Nguyen

@ToanNguyen好的。这样,您能否将他/她的评论作为您问题的答案并标记为固定?:-)如果您发现需要毛绒糖的技术原因,请也添加它们:-)。在我这一边,我也有VPN连接,并且这些连接在没有干扰的情况下也可以正常工作。
wget

我又回来了。问题不在于内核有问题,而在于驱动程序有问题,尤其是专用于硬件校验和卸载的部分。有关更多信息,请参见此线程
wget

它能解决您的问题吗?
Toan Nguyen

@ToanNguyen实际上,上一次我遇到此问题时,我只是降低了内核的等级,并且它再次正常工作。现在,我只是禁用了硬件校验和卸载,而没有降级任何功能,它解决了这个问题,是的。
wget

1

ssh -o IPQoS=throughput user@{ip}


没有迹象表明用户正在使用macOS或他们正在尝试以root用户身份登录。
Kusalananda

你是对的!但是,我在Windows上以不同于'root'的用户身份测试了该命令。仍然有效!
vicky penkova

0

使用以下命令在目标服务器上打开ssh.config文件:

须藤nano /etc/ssh/ssh.config

在该文件的末尾添加以下行

ClientAliveInterval 300

ClientAliveCountMax 2

按Ctrl + o并输入。

须藤重启

这对我来说非常有用。我当时的情况也一样。对此进行了尝试,但只需执行以下步骤。只有这个。我希望它也对您有用。

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.