精通测试技术,linux,shell,性能测试
全部博文(246)
分类: 系统运维
2012-07-22 23:22:41
一台托管在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 管理时会更加烦躁 :(
找了一些关于 SSH Server 的资料,发现通过修改 sshd 的配置文件,能够让 SSH Server 发送“心跳”信号来维持持续连接,下面是设置的内容
打开服务器 /etc/ssh/sshd_config,我在最后增加一行
ClientAliveInterval 60
ClientAliveCountMax 1
这 样,SSH Server 每 60 秒就会自动发送一个信号给 Client,而等待 Client 回应,(注意:是服务器发心跳信号,不是客户端,这个有别于一些 FTP Client 发送的 KeepAlives 信号哦~~~),如果客户端没有回应,会记录下来直到记录数超过 ClientAliveCountMax 的值时,才会断开连接。