暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Linux配置不操作超时自动退出登录

DBA闲思杂想录 2022-11-19
6772

Linux系统管理员有时候为了增强Linux系统的安全性,做了一些限制设置,你通过SecureCRT等工具远程连接到服务器后,当你一段时间没有任何操作(空闲一段时间)后,你会发现连接自动关闭断开了,提示需要重新连接。那么Linux系统管理员是通过什么配置来实现的呢?一般来说,这个是通过TMOUT环境变量或sshd_config的参数设置来实现。下面我们来简单介绍一下:

TMOUT环境变量

TMOUT是一个bash变量,用于控制用户在没有任何活动时自动注销Linux用户。当你给TMOUT设置一个值,例如TMOUT=900,表示900秒内无任何操作就会自动退出登录。如果你设置TMOUT=0表示永不自动退出。

export TMOUT=900    # 设置900秒内用户无操作就自动断开终端
readonly TMOUT      # 将值设置为readonly 防止用户更改

注意:设置了readonly 之后在当前shell下是无法取消的,需要先将/etc/profile 中设置readonly行注释起来或直接删除,logout 后重新login 。

如果在/etc/profile中设置环境变量TMOUT,这个是全局的,它会对所有用户生效。另外,需要注意,不仅可以在/etc/profile中设置环境变量TMOUT,也可以在~/.bash_profile中设置TMOUT环境变量,而且优先级高于/etc/profile中的TMOUT设置。所以当你设置后,最后最好检查一下环境变量TMOUT的值.防止有些地方没有修改到。

echo $TMOUT
7200
##或
set | grep TMOUT
7200

另外,如果你想在某个会话窗口取消这个设置,可以使用命令unset TMOUT取消TMOUT设置或将TMOUT设置为0,当然前提是没有设置readonly TMOUT。

SSH超时断开

在/etc/ssh/sshd_config文件,可以通过参数ClientAliveInterval和ClientAliveCountMax设置ssh超时断开。

ClientAliveInterval :指定了服务器端向客户端请求消息的时间间隔, 默认是0, 表示不发送. 单位是秒。

ClientAliveCountMax :表示服务器发出请求后客户端没有响应的次数达到一定值, 就自动断开. 正常情况下, 客户端不会不响应.

如果你在/etc/ssh/sshd_config配置文件中做了如下设置的话,意味着客户端空闲300*3=900秒后就会断开链接。

#每隔300秒给客户端发送一次保活信息包给客户端
ClientAliveInterval  300

#Server端发出的请求客户端没有回应的次数达到3次的时候就断开连接,正常情况下客户端都会相应
ClientAliveCountMax  3

注意:修改上述参数后,必须重启sshd服务

systemctl restart sshd

其实除了上述设置外,一些防火墙也会关闭超时的空闲连接,这个就比较隐蔽了,需要跟网络管理员一起检查。

另外,如果你对这些断开超时的空闲连接设置比较苦恼,而你有没有权限修改上面环境变量或参数时,我们可以通过客户端的一些反空闲限制设置解决这个问题,如下所示:

SecureCRT在“会话选项”——> "终端"——> “反空闲” 中设置每隔多少秒发送一个字符串,或者是NO-OP协议包。

如果是Putty的话,可以如下设置

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


文章转载自DBA闲思杂想录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论