2023年10月17日 星期二

Linux主機閒置自動登出

Linux主機閒置自動登出 

設定Linux 主機在一定時間未操作時,自動登出系統。Redhat官網How to keep TCP sessions alive for extended periods of time? ,可以shellsshftp等項目設定自動斷線。

Bash Shell timeout基本設定

檢查是否有設定timeout時間
# export | grep TMOUT

一次性設定 ( 10分鐘自動登出 )
# export TMOUT=600

固定性更改  ( 10分鐘自動登出 )
對於特定使用者,在 $HOME/.bashrc 進行設定。
# echo "TMOUT=600" >> ~/.bashrc

對於所有用戶,在 /etc/bashrc 設定。
# echo "TMOUT=600" >> /etc/bashrc

增加檔案
# vi /etc/profile.d/auto-logout.sh
---
#!/bin/bash
#Auto-logout in 600 seconds if the session is idle
export TMOUT=600
readonly TMOUT
---

# chmod +x /etc/profile.d/auto-logout.sh
# source /etc/profil
readonly 設定變數和函數為只有讀取權限。
使用者將無法變更名為 TMOUT 的變數的值。

Openssh 伺服器設定自動登出

Openssh 伺服器自動登出參考官網Which options can be used to configure ssh's timeout?

新增 ClientAliveInterval和ClientAliveCountMax到/etc/ssh/sshd_config檔案
ClientAliveCountMax:使用者活動訊息的統計次數。
ClientAliveInterval:等待使用者輸入的逾時時間。

伺服器每25秒發送訊息給用戶端,當沒有收到任何回應,累計2次後終止連線。所以是50秒沒有任何輸入自動斷線。
---
        ClientAliveInterval 25
        ClientAliveCountMax 2
---

使用者2分鐘無使用動作,自動中斷使用者連線。
---
        ClientAliveInterval 2m
        ClientAliveCountMax 0
---
正常設定 ClientAliveCountMax 0 是禁止伺服器發送活動訊息及使設定用者輸入的逾時時間 ClientAliveInterval 是可以實現。
但RHEL 8.6 和 RHEL9 中的設定ClientAliveCountMax 0會導致不同的行為,參考官網SSH server no longer terminate inactive sessions when setting ClientAliveCountMax=0,所以建議設定ClientAliveCountMax=1。


參考資料: 
How to keep TCP sessions alive for extended periods of time?
https://access.redhat.com/solutions/23874
Which options can be used to configure ssh's timeout?
https://access.redhat.com/solutions/25773
SSH server no longer terminate inactive sessions when setting ClientAliveCountMax=0
https://access.redhat.com/solutions/6962538
Linux / UNIX Automatically Logout BASH / TCSH / SSH Users After a Period of Inactivity
https://www.cyberciti.biz/faq/linux-unix-login-bash-shell-force-time-outs/

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。