萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 設定 SSH 連線閒置超時中斷時間

SSH 連線長時間閒置預設會被伺服器斷開,造成操作中斷。透過調整 sshd_config 的 KeepAlive 參數,可延長或停用自動中斷。但需注意:參數單位與實際行為常被誤解,建議搭配客戶端設定雙端保持。

伺服端設定 /etc/ssh/sshd_config

# 啟用 TCP 層心跳
TCPKeepAlive yes

# SSH 協議層心跳:每 60 秒發送一次,最多 360 次無回應才斷線(約 6 小時)
ClientAliveInterval 60
ClientAliveCountMax 360

關鍵修正: 原文 ClientAliveCountMax 360 單位非分鐘,而是「心跳回應失敗次數」。配合 ClientAliveInterval 60(秒),實際超時 = 60 × 360 = 21600 秒 = 6 小時。

客戶端設定 ~/.ssh/config(推薦)

Host *
    ServerAliveInterval 60
    ServerAliveCountMax 360
    TCPKeepAlive yes

雙端同時設定,穩定性最高。

套用設定

sudo systemctl restart sshd
# 或
sudo /etc/init.d/ssh restart

替代方案:tmux / screen

若需極長時間保持會話(數天),建議使用終端機多工器:

  • tmux new -s mysession:建立會話,斷線後 tmux attach -t mysession 恢復。
  • screen -S mysession:同理。

此方式不依賴 SSH 連線存活,即使網路中斷、重啟電腦,遠端程式仍在後台運行。

安全考量

  • 過長超時增加被劫持風險,建議搭配 ClientAliveInterval 定期驗證連線活性。
  • 生產環境建議 30 分鐘~2 小時超時,並強制使用 tmux/screen 執行長時間任務。

正確理解參數含義並雙端配置,才能真正解決 SSH 閒置斷線困擾。

copyright © 萬盛學電腦網 all rights reserved