在Linux中,[解决] SSH连接出错

分享于 

4分钟阅读

Linux

  繁體

如果您使用SSH连接到远程Linux服务器,则会注意到,如果将SSH会话保持一段时间不活动,然后再次尝试使用它,则SSH会话会断开连接,并显示以下错误消息:

:client_loop: send disconnect: Broken pipe

在某些系统上,它显示'Write failed : Broken pipe'or'Connection closed by remote host'.

让我们看看导致此错误的原因以及如何使SSH连接保持活动状态。

使用SSH修复损坏的管道错误

如您所料,SSH连接由于不活动而关闭。通常在5分钟左右。

为避免SSH会话断开连接,您可以做的是在特定时间间隔从服务器向客户端(ClientAliveInterval)或从客户端向服务器(ServerAliveInterval)发送"活动消息"。

这样,就可以保持SSH会话的活动状态,因为客户端和服务器之间存在通信,并且服务器理解客户端仍然存在。

  • 如果您通过SSH连接到多个服务器,请在您的计算机上进行设置。
  • 如果您是系统管理员,则可以在服务器上进行设置。

方法1:客户端SSH配置更改

假设你希望保持SSH连接处于活动状态,最多10分钟(600秒)空闲时间。

通过SSH连接到远程Linux系统时,您可以像这样提及ServerAliveInterval值:

ssh -o ServerAliveInterval=600 [email protected]_ip_address

首先,确保有ssh config文件,

touch ~/.ssh/config

使用chmod命令并为其添加以下文件许可权:

chmod 600 ~/.ssh/config
echo "ServerAliveInterval 600" >> ~/.ssh/config 

这会将您将使用的所有SSH连接的ServerAliveInterval值设置为10分钟。


Host *
ServerAliveInterval 600

方法2:服务器端SSH配置更改

服务器的SSH config文件通常位于/etc/ssh/sshd_config。

如果您打开此文件,则会在此处找到两个感兴趣的参数:

  • ClientAliveInterval:这是服务器将活动消息发送到ssh连接的客户端的不活动时间段
  • ClientAliveCountMax:这是服务器发送活动消息的尝试次数

ClientAliveInterval设置为200秒,将ClientAliveCountMax设置为3,这意味着服务器将在200秒后发送活动消息,如果客户端没有任何活动,它将在400秒后再次发送活动消息。客户端没有响应/活动,并且在600秒后发送了另一个活动消息。此后(600秒),SSH连接断开。

可以在你喜欢的基于终端的文本编辑器中编辑/etc/ssh/sshd_config文件,比如Vim,查找ClientAliveInterval和ClientAliveCountMax条目,移除行首处的#键,并赋予它们适当的值。

保存,并退出文件。

请不要将SSH连接超时设置为几个小时,这会浪费资源。

欢迎你的反馈。


bro  PIP  SSH  PIPE  中断管道