让我们想象这么一个场景。你有一台站群服务器经常被互联网中各系统的很多个使用者访问。有可能出现某些使用者忘记登出会话让会话保持会话处于连线状态。我们都知道留下一个处于连线状态的使用者会话是一件多么危险的事情。有些使用者可能会借此故意做一些损坏系统的事情。而你,作为一名系统管理员,会去每个系统上都检查一遍使用者是否有登出吗?其实这完全没必要的。而且若互联网中有成百上千台机器,这也太耗时了。不过,你可以让使用者在本机或 SSH 会话上超过一定时间不活跃的情况下自动登出。本教程就将教你如何在类 Unix 系统上实现这一点。一点都不难。跟我做。
 
在 Linux 上实现一段时间后自动登出非活动使用者
有三种实现方法。让我们先来看第一种方法。
 
方法 1:
编辑 ~/.bashrc 或 ~/.bash_profile 档案:

$ vi~/.bashrc

或,

$ vi~/.bash_profile

将下面行加入其中:

TMOUT=100

这会让使用者在停止动作 100 秒后自动登出。你可以根据需要定义这个值。储存并关闭档案。
执行下面命令让更改生效:

$ source ~/.bashrc

或,

$ source ~/.bash_profile

现在让会话闲置 100 秒。 100 秒不活动后,你会看到下面这段资讯,并且使用者会自动退出会话。

timed out waiting for input:auto-logout
Connection to 192.168.43.2 closed.

该设定可以轻易地被使用者所修改。因为,~/.bashrc 档案被使用者自己所拥有。
要修改或者删除超时设定,只需要删掉上面新增的行然后执行 source ~/.bashrc 命令让修改生效。
此外,使用者也可以执行下面命令来禁止超时:

$ export TMOUT=0

或,

$ unset TMOUT

若你想阻止使用者修改该设定,使用下面方法代替。
 
方法 2:
以 root 使用者登入。
建立一个名为 autologout.sh 的新档案。

#vi/etc/profile.d/autologout.sh

加入下面内容:

TMOUT=100
readonly TMOUT
export TMOUT

储存并退出该档案。
为它新增可执行许可权:

#chmod+x /etc/profile.d/autologout.sh

现在,登出或者重启系统。非活动使用者就会在 100 秒后自动登出了。普通使用者即使想保留会话连线但也无法修改该配置了。他们会在 100 秒后强制退出。
这两种方法对本地会话和远端会话都适用(即本地登入的使用者和远端系统上通过 SSH 登入的使用者)。下面让我们来看看如何实现只自动登出非活动的 SSH 会话,而不自动登出本地会话。
 
方法 3:
这种方法,我们只会让 SSH 会话使用者在一段时间不活动后自动登出。
编辑 /etc/ssh/sshd_config 档案:

$ sudovi/etc/ssh/sshd_config

新增/修改下面行:

ClientAliveInterval100
ClientAliveCountMax0

储存并退出该档案。重启 sshd 服务让改动生效。

$ sudosystemctl restart sshd

现在,在远端系统通过 ssh 登入该系统。 100 秒后,ssh 会话就会自动关闭了,你也会看到下面讯息:

$ Connection to 192.168.43.2 closed by remote host.
Connection to 192.168.43.2 closed.

现在,任何人从远端系统通过 SSH 登入本系统,都会在 100 秒不活动后自动登出了