我们知道将空闲的shell会话保留在Linux服务器上是可能存在安全风险的。而且还会消耗系统资源。想象一下,如果你有多个用户远程访问同一个Linux系统,并让他们的会话处于空闲状态。作为Linux系统管理员,你可以看到哪些用户在系统上登录,以及他们闲置了多长时间。
你可以手动将闲置的用户踢出,但这很烦人,当然效率也不高。
让我来告诉你如何从空闲用户的shell中自动注销他们。
方法一:使用TMOUT自动从空闲的shell会话中注销用户。
在bash和其他shell中,你可以使用TMOUT变量来设置空闲注销时间。如果在这个时间段内用户没有任何活动,shell会话将被关闭。
检查TMOUT是否已经被设置。这些值的单位是秒。
echo $TMOUT
为了测试,你可以这样使用。
TMOUT=300
这将在300秒后,即5分钟后关闭终端会话或SSH会话。
对于SSH会话,你应该看到这样的消息。
root@localhost:~# timed out waiting for input: auto-logout
Connection to 212.125.xx.xxx closed.
对于本地会话,你的终端应该是自动关闭的。
但是你可能已经知道,这不是设置环境变量的最好方法。你可以在单个用户的配置文件(或bash配置文件)中设置它,或者在系统范围内的/etc/profile中为所有用户设置它。
假设你是一个系统管理员,并且你想在你的Linux服务器上自动注销空闲用户,那么就在系统级别设置它。
用Vim或Nano等文本编辑器打开/etc/profile文件。
nano /etc/profile
并在其中添加以下一行。
TMOUT=300
保存并关闭文件。从现在开始,任何用户在5分钟内没有活动,就会自动注销。
这对本地和远程会话都有效。如果你想只对SSH会话进行设置,你可以使用下一个方法。
方法2:自动从空闲的SSH会话中注销用户。
你可以配置SSH服务器在用户闲置一段时间后强制注销。
编辑SSH配置文件(/etc/ssh/sshd_config)。
sudo nano /etc/ssh/sshd_config
查找以下两个变量,并删除它们起始行前的#,然后像这样设置数值。
ClientAliveInterval 200
ClientAliveCountMax 3
保存并关闭文件。
这意味着服务器将每隔200秒向客户端发送一次keep alive消息,共3次。如果没有收到响应(意味着用户处于空闲状态),它将在600秒(200*3)时关闭会话。
你可以根据自己的需求选择合适的数值。
这只是SSH方式,不会影响本地shell会话。
希望你觉得这个Linux自动注销用户的小技巧对你有帮助。A5互联https://www.a5idc.net/