SSH 会话中的“损坏的管道”消息意味着什么?

SSH 会话中的“损坏的管道”消息意味着什么?

有时我的 SSH 会话会断开并显示一条Write failed: Broken pipe消息。这是什么意思?我怎样才能让我的会话保持开放状态?

我知道screen,但这不是我正在寻找的答案。我认为这是一个sshd配置选项。

答案1

您的服务器可能会关闭闲置时间过长的连接。您可以更新客户端 ( ServerAliveInterval) 或服务器 ( ClientAliveInterval)

 ServerAliveInterval
         Sets a timeout interval in seconds after which if no data has
         been received from the server, ssh(1) will send a message through
         the encrypted channel to request a response from the server.  The
         default is 0, indicating that these messages will not be sent to
         the server.  This option applies to protocol version 2 only.

 ClientAliveInterval
         Sets a timeout interval in seconds after which if no data has
         been received from the client, sshd(8) will send a message
         through the encrypted channel to request a response from the
         client.  The default is 0, indicating that these messages will
         not be sent to the client.  This option applies to protocol
         version 2 only.

更新您的服务器(并重新启动您的sshd

echo "ClientAliveInterval 60" | sudo tee -a /etc/ssh/sshd_config

或者客户端:

echo "ServerAliveInterval 60" >> ~/.ssh/config 

答案2

如果想要更长的连接时间,在客户端添加:

echo 'ServerAliveInterval 30' | tee -a ~/.ssh/config
echo 'ServerAliveCountMax 1200' | tee -a ~/.ssh/config

ServerAliveCountMax默认情况下,该值设置为 3。因此,一旦ServerAliveInterval向您的服务器发送了 3 小包信息,它将自动注销。将其设置为 1200 意味着此过程必须至少发生 1200 次。简而言之,您应该至少连接 30*1200 秒(10 小时)。

答案3

另一种解决方案是使用mosh- 手机外壳。与 ssh 相比,它通过 UDP 连接并支持漫游。您可以在家中开始会话,暂停您的笔记本电脑,将其带到工作/朋友/任何有互联网的地方,取消暂停您的笔记本电脑并继续工作,就像什么也没发生一样。如果您的互联网连接很差,它尤其有用:如果您的击键未到达服务器,它会显示即时反馈,并不断尝试重新建立连接。

安装和设置很简单:它现在包含在所有当前的 Linux(加上一些非 Linux)发行版中,并且它通过先前的 ssh 连接协调会话初始化和身份验证。因此,如果您能够通过 via 连接,并且两端都安装了 mosh 软件包,那么ssh user@server您很可能只需调用 即可与 mosh 连接。mosh user@server

连接失败的主要原因是您必须通过 UDP 端口(默认范围:60000-61000)访问服务器才能使 mosh 正常工作。因此,如果服务器位于防火墙后面,如果您自己无法在其中打孔,那么您就很不幸(安全影响)。

答案4

这通常意味着您的网络 (TCP) 连接已重置。例如,您的互联网提供商重新连接了您或类似的事情。

相关内容