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 new -s mysession:建立會話,斷線後 tmux attach -t mysession 恢復。screen -S mysession:同理。此方式不依賴 SSH 連線存活,即使網路中斷、重啟電腦,遠端程式仍在後台運行。
ClientAliveInterval 定期驗證連線活性。正確理解參數含義並雙端配置,才能真正解決 SSH 閒置斷線困擾。