這種**「網頁(Web/HTTP)正常,但閒置一陣子後 Ping 不到且 SSH 斷線」**的現象,在 Docker 環境或一般伺服器運維中非常經典。
這並非伺服器當機,核心原因在於 SSH、Ping 與網頁(HTTP)的連線本質(協定與狀態)完全不同。主要有以下 4 個原因與對應的解決方法:
讓 SSH 定期發送微小訊號,騙過防火牆,讓它以為連線一直很活躍。 [4]
方法 A(在你的電腦設定):修改你電腦的 SSH 設定檔 ~/.ssh/config,加入以下內容:
Host *
ServerAliveInterval60# 每 60 秒對伺服器發送一次心跳
ServerAliveCountMax3# 失敗 3 次才斷線
方法 B(在伺服器端設定):修改伺服器的 /etc/ssh/sshd_config,找到或加入以下內容:修改後記得重啟 SSH 服務:sudo systemctl restart sshd 或 sudo systemctl restart ssh。 [3, 4, 5]
ClientAliveInterval60
ClientAliveCountMax3
如果你平時 Ping 得到,閒置久了卻 Ping 不到(但網頁能開):