linux下保持ssh不断线的配置方法

发布时间:2020-03-24编辑:脚本学堂
托管在IDC的一台FreeBSD服务器,发现连过去一段时间内没动作就会自动断线,老是这样很不方便,于是进入服务器,修改 /etc/ssh/sshd_config文件的参数...

托管在IDC的一台FreeBSD服务器,发现连过去一段时间内没动作就会自动断线,老是这样很不方便,于是进入服务器,修改 /etc/ssh/sshd_config文件的参数如下:
 

复制代码 代码如下:
ClientAliveInterval 30
ClientAliveCountMax 6

参数说明:
SSH Server 每 30 秒就会自动发送一个信号给 Client,而等待 Client 回应,如果客户端没有回应,会记录下来直到记录数超过 ClientAliveCountMax(这里设置为6次) 的值时,才会断开连接。
重启sshd服务即可。

使用ssh连接远程服务器的时候,在网络质量不太好的情况下,如果长时间没有键盘输入,ssh连接有可能中断。正在执行的程序和vim等缓冲区数据都会丢失。
在windows下使用SecureCRT可以设置session的noop属性来保持连接。
linux下要保持连接,可以使用-o的一个参数ServerAliveInterval来设置一个防止超时的时间。
ssh -o ServerAliveInterval=60 x.x.x.x

如果要让所有的ssh连接自动加上此属性,可以修改 ~/.ssh/config 文件添加
 

复制代码 代码如下:
Host *
Protocol 2
ServerAliveInterval 30

当然,只这只能解决网络延时大和不稳定的情况,如果网络出现故障,数据还是容易丢失。因此,远程操作最好还是在screen中执行为好。最近工作时经常要同时维护 3 台 Ubuntu 的主机,但当 SSH Client 窗口在几分钟没有键盘操作的时候,会话就会超时断线,特别对于 SFTP 管理时会更加麻烦。

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

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

复制代码 代码如下:
ClientAliveInterval 60
ClientAliveCountMax 1

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