SSH 保持连接方法 (解决Broken pipe)

三种办法彻底解决SSH的 Write failed: Broken pipe 问题

原文连接:https://blog.csdn.net/weixin_43145361/article/details/85259854

问题描述
在使用SSH连接远程服务器的时候,如果长时间不操作,再次进入 Terminal 时就会有卡死一段时间没有响应。等待一段时间以后,会发现以下错误提示:
Write failed: Broken pipe
这表示连接管道已经断开,所以只能重进行连接。

解决方法
方法一:客户端配置
在客户端的 ~/.ssh/ config文件(如不存在请自行创建)中添加下面内容:
ServerAliveInterval 60

方法二:服务器端配置
在服务器的 /etc/ssh/sshd_config 中添加如下的配置:
ClientAliveInterval 60

方法三:临时SSH命令配置
如果只是临时性的连接(即只作用于当前SSH),可以直接使用 ssh 命令参数进行配置。
$ ssh -o ServerAliveInterval=60 user@sshserver

原理
为了保证服务器的资源不被浪费,系统会对SSH的连接进行自动回收管理。回收的原则就是如果一个连接在规定的限制时间内没有数据传输就认定为超时,然后就会主动断开连接。基于这个原则,如果想要保持连接,只需要在超时前发送一个空数据包即可。方法一和方法三是客户端主动发消息,而方法二是服务器端主动发消息。这两方法各有利弊,简单说一下区别。
客户端在线状态相对自由,可以随时上线和下线。这样的话,如果下线了,那么就无法继续发送消息,这样即使设置了ServerAliveInterval=60,消息因掉线而无法发出。所以超时后,仍然会掉线。而服务器端如果设置了以后,如果客户端掉线了,会根据 ClientAliveCountMax 进行反复测试,如果超过次数,仍然也会掉线。但是相对于客户端,连接的稳定性更加可靠。不过需要注意的事,在客户端数量较少的情况下使用服务器端维持比较合适,否则当客户端数量巨大时,对服务器的资源比较浪费。
————————————————
原文链接:https://blog.csdn.net/weixin_43145361/article/details/85259854

 

转载自:
http://www.neatstudio.com/show-625-1.shtml
http://www.linuxidc.com/Linux/2010-05/26031.htm (这一篇作者不详, 如有侵犯请速告知)

https://blog.csdn.net/Earl_yuan/article/details/50454032

在使用SSH客户端进行连接管理的时候如果长时间不输入命令, 服务器会自动断开连接, 尤其是有的人使用SSH作为代理连接这样的情况更是突出, 因此我在网上搜集了可以让 SSH 保持连接的方法与大家分享

在服务器端, 可以让服务器发送“心跳”信号测试提醒客户端进行保持连接

通过修改 sshd 的配置文件,能够让 SSH Server 发送“心跳”信号来维持持续连接,下面是设置的内容

打开服务器 /etc/ssh/sshd_config,我在最后增加一行

ClientAliveInterval 60
ClientAliveCountMax 1

这 样,SSH Server 每 60 秒就会自动发送一个信号给 Client,而等待 Client 回应,(注意:是服务器发心跳信号,不是客户端,这个有别于一些 FTP Client 发送的 KeepAlives 信号哦~~~),如果客户端没有回应,会记录下来直到记录数超过 ClientAliveCountMax 的值时,才会断开连接。

如果你没有服务器端管理权限, 在客户端进行设置也可以实现

只要在/etc/ssh/ssh_config文件里加两个参数就行了

1 TCPKeepAlive yes
2 ServerAliveInterval 300

前一个参数是说要保持连接,后一个参数表示每过5分钟发一个数据包到服务器表示“我还活着”

如果你没有root权限,修改或者创建~/.ssh/ssh_config也是可以的

在这种方法中, 如果你只想针对某一个ssh连接进行持续, 你可以将上述配置文件复制一下进行修改然后在连接的时候使用 -F参数进行配置文件的指定。 当然因为只需要修改两个参数, 你也可以直接在连接命令中进行设定即:

ssh -o TCPKeepAlive=yes -o ServerAliveInterval=300 [email protected] -p 12345678

 

你可能感兴趣的:(编程语言,互联网,shell)