› 論壇總覽 › MP500系列微型電腦討論區 › MP520-20 過一段時間自動斷線 › 回覆至:MP520-20 過一段時間自動斷線
Gemini 2.5 Pro:
好的,SSH 連線閒置一段時間後自動斷線是一個常見問題,通常是由於客戶端、伺服器端或中間的網路設備(如防火牆、路由器)的閒置超時設定所導致。
要解決這個問題,主要的方法是讓 SSH 連線定期發送「保持連線」(KeepAlive)的訊號,告訴伺服器和中間設備這個連線仍然是活躍的。有兩種主要方式可以設定:
方法一:修改客戶端 SSH 設定 (推薦,影響本機所有連線或特定連線)
這是最常用且建議的方式,因為你只需要修改自己電腦上的設定,不需要動到遠端伺服器。
針對單次連線 (使用命令列選項):
在每次連線時加上 -o ServerAliveInterval=N 選項,其中 N 是秒數。這會讓你的 SSH 客戶端每隔 N 秒就向伺服器發送一個保持連線的訊號。建議值可以是 60 或 120 秒。
Bash
ssh -o ServerAliveInterval=60 your_username@your_server_ip
修改 SSH 客戶端設定檔 (永久生效):
編輯你本機上的 SSH 客戶端設定檔 ~/.ssh/config (如果檔案或目錄不存在,請自行建立)。
開啟檔案 (例如使用 nano ~/.ssh/config 或 vim ~/.ssh/config)
加入以下內容:
Host *
ServerAliveInterval 60
# ServerAliveCountMax 3 # (可選) 連續 N 次沒收到回應才斷線,預設值通常夠用
說明:
Host * 表示這個設定套用到所有 SSH 連線。如果你只想套用到特定的伺服器,可以將 * 換成伺服器的別名或 IP 地址/主機名,例如 Host my-debian-server。
ServerAliveInterval 60: 每 60 秒發送一次 KeepAlive 訊號給伺服器。
ServerAliveCountMax 3: 如果客戶端發送了 KeepAlive 訊號,但連續 3 次 (預設值) 都沒有收到伺服器的回應,則斷開連線。通常不需要特別設定這個值。
儲存檔案並退出編輯器。之後你用 ssh your_username@your_server_ip 連線時,就會自動套用這個設定。
方法二:修改伺服器端 SSH 設定 (影響所有連線到該伺服器的客戶端)
如果你有遠端 Debian 伺服器的管理權限 (例如 sudo 權限),並且希望所有連線到這台伺服器的客戶端都能保持連線(即使客戶端沒有設定),可以修改伺服器端的 SSH 設定。
登入你的 Debian 伺服器。
編輯 SSH 伺服器設定檔:
使用 sudo 權限編輯 /etc/ssh/sshd_config 檔案。
Bash
sudo nano /etc/ssh/sshd_config
# 或者 sudo vim /etc/ssh/sshd_config
找到或加入以下設定行:
在檔案中找到 ClientAliveInterval 和 ClientAliveCountMax 這兩行。如果它們被 # 註解掉了,請取消註解 (刪除行首的 #);如果不存在,請自行加入。
ClientAliveInterval 60
ClientAliveCountMax 3
說明:ClientAliveInterval 60: 伺服器會每隔 60 秒檢查一次客戶端是否還有回應。如果沒有回應,伺服器會發送一個 KeepAlive 訊號給客戶端。
ClientAliveCountMax 3: 如果伺服器發送了 KeepAlive 訊號,但連續 3 次都沒有收到客戶端的回應,伺服器就會主動斷開這個連線。
儲存檔案並退出編輯器。
重新啟動 SSH 服務:
為了讓設定生效,需要重新啟動 SSH 伺服器。
Bash
sudo systemctl restart sshd
# 或者在較舊的系統上可能是:
# sudo service ssh restart
總結與建議
優先推薦使用方法一 (修改客戶端設定),因為它最簡單,不需要伺服器權限,且只影響你自己的連線。~/.ssh/config 的方式可以一勞永逸。
如果你管理伺服器,且希望伺服器主動管理閒置連線(例如,為了釋放資源或安全考量而踢掉無回應的客戶端),則可以設定方法二 (修改伺服器端設定)。
ServerAliveInterval (客戶端設定) 和 ClientAliveInterval (伺服器設定) 的目的相似,都是為了保持連線活躍,防止被中間設備斷開。通常只需要設定其中一種即可。如果你同時設定了兩者,連線會更加不容易斷開,但會產生稍微多一點的背景流量。
通常設定客戶端的 ServerAliveInterval 60 就足以解決大部分閒置斷線的問題了。