在安全需要下,一些 ssh 主机连接后,等待一段时间不操作会自动操时退出。除了我们日常用到的TMOUT参数外,还有另外ClientAliveInterval、ClientAliveCountMax、autologout 几个和操时相关的参数。这里分别介绍下。

一、ssh相关配置

ssh的相关配置主要是解决连接自动断开的问题,其又分为客户端和服务端部分。涉及到的参数有ClientAliveInterval(服务端参数)、ClientAliveCountMax(服务端参数)、ServerAliveInterval(客户端参数)

1、sshd_config服务端参数

  • ClientAliveInterval指定了服务器端向客户端请求消息的时间间隔, 默认是0,不发送。而ClientAliveInterval 300表示5分钟发送一次,然后客户端响应,这样就保持长连接了。
  • ClientAliveCountMax,默认值3。ClientAliveCountMax表示服务器发出请求后客户端没有响应的次数达到一定值,就自动断开,正常情况下,客户端不会不响应。
1ClientAliveInterval 300
2ClientAliveCountMax 3

按上面的配置的话,300*3=900秒=15分钟,即15分钟客户端不响应时,ssh连接会自动退出。具体可以参看man sshd_config 获取更多参数信息。

2、ssh_config客户端配置

1# vim /etc/ssh/ssh_config
2找到里面的ServerAliveInterval 参数,如果没有你同样自己加一个就好了。参数意义相同,都是秒数,比如5分钟:
3ServerAliveInterval 300

以上在客户端配置后,就会有反空闲设置,即每5分钟会自动和服务端做一次确认。windows下的ssh客户端软件可以使用如下方法配置:

SecureCRT的配置如下图:

ssh-config

putty设置如下:

putty -> Connection -> Seconds between keepalives ( 0 to turn off ),默认为0,改为60。

二、bash下的TMOUT参数

默认情况下,一般我们不会修改sshd_config和ssh_config配置达到自动退出的控制,而是通过shell 自身带的变量操作。常见的bash shell 下有一个TMOUT参数可以设置自动超时时间,配置方法如下:

1# vi /etc/profile
2TMOUT=180    //设置三分钟超时
3export TMOUT

配置完成后source /etc/profile 生效,执行echo $TMOUT查看。具体更多变量可以man bash查看

三、csh下的自动超时

csh shell 下的自动超时变量是autologout,具体设置方法如下:

1# vim /etc/csh.cshrc
2# 添加如下行:
3set autologout=30

修改完成后,退出连接再重新登陆即可生效。更多可以使用man csh 获取。