讓我們想象這么一個場景。你有一台服務器經常被網絡中各系統的很多個用戶訪問。有可能出現某些用戶忘記登出會話讓會話保持會話處於連接狀態。我們都知道留下一個處於連接狀態的用戶會話是一件多么危險的事情。有些用戶可能會借此故意做一些損壞系統的事情。而你,作為一名系統管理員,會去每個系統上都檢查一遍用戶是否有登出嗎?其實這完全沒必要的。而且若網絡中有成百上千台機器,這也太耗時了。不過,你可以讓用戶在本機或 SSH 會話上超過一定時間不活躍的情況下自動登出。本教程就將教你如何在類 Unix 系統上實現這一點。一點都不難。跟我做。
有三種實現方法。讓我們先來看第一種方法。
方法 1:
編輯 ~/.bashrc 或 ~/.bash_profile 文件:
TMOUT=100
這會讓用戶在停止動作 100 秒后自動登出。你可以根據需要定義這個值。保存並關閉文件。
source ~/.bash_profile
此外,用戶也可以運行下面命令來禁止超時:
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 文件:
$ sudo vi /etc/ssh/sshd_config
添加/修改下面行:
ClientAliveInterval 100 ClientAliveCountMax 0
保存並退出該文件。重啟 sshd 服務讓改動生效。
$ sudo systemctl restart sshd
現在,任何人從遠程系統通過 SSH 登錄本系統,都會在 100 秒不活動后自動登出了。