› 論壇總覽 › MP500系列微型電腦討論區 › MP520-20 過一段時間自動斷線 › 回覆至:MP520-20 過一段時間自動斷線
ChatGPT o3:
以下幾個方向幾乎能解決 99 % 的「SSH 放著就被踢」問題。建議先從 1 → 2 → 3 依序排查,最後再做 4 作為保險。
1 . 檢查是不是 shell 自己在踢人(TMOUT)
echo $TMOUT
如果輸出是一個數字(例如 900),代表 bash 在偵測到 900 秒 無輸入就自動 logout。
解法:在 ~/.bashrc(或 /etc/profile → 全系統)註解掉/刪掉 TMOUT= 這行,或改成 export TMOUT=0。
# ~/.bashrc
unset TMOUT # 或 export TMOUT=0
2 . 在 Server 端 打開 keep-alive(最乾脆)
你有 sudo 權限就用這招;不用逐台修改 Client。
sudo nano /etc/ssh/sshd_config
# 加 / 改成:
ClientAliveInterval 60 # 每 60 秒對 client 詢問一次
ClientAliveCountMax 3 # 若連續 3 次無回應才斷線(= 實際約 3 分鐘)
sudo systemctl reload sshd # 不會中斷現有連線
原理:sshd 主動丟「還活著嗎?」封包,伺服器、閘道或防火牆就不會把這條 TCP 視為「閒置」而丟棄。
3 . 只能動 Client 時的做法
在 自己的筆電 / PC 設定 ~/.ssh/config(沒有就新建):
Host *
ServerAliveInterval 60 # Client 每 60 秒對 Server 嗅探
ServerAliveCountMax 3
TCPKeepAlive yes
一次性連線也可以臨時加參數:
ssh -o ServerAliveInterval=60 user@host
4 . 撐傘:tmux / screen 或乾脆用 mosh
tmux/screen:就算 SSH 斷,你重新連進來 tmux attach 就續作業,不怕程式被 kill。
mosh:在 UDP 上自帶心跳,網路飄移或休眠後也會自動重連,比 SSH Keep-Alive 更堅韌。
我自己的偏好(給你參考)
Server 端 ClientAliveInterval=60 + tmux。
這組合在雲端 VPS、公司防火牆後、甚至咖啡廳 Wi-Fi 都撐得住;60 秒心跳不會造成明顯負擔,又幾乎不掉線。
設定完別忘了重新登入測試,觀察 10–15 分鐘若不再斷線就 OK。如果還是掉,就八成是中途路由/企業防火牆砍長連線,這時 mosh 是最省事的終極武器。祝連線順暢!