1. 程式人生 > >解決SSH自動斷線問題

解決SSH自動斷線問題

在連線遠端SSH服務的時候,經常會發生長時間後的斷線,或者無響應(無法再鍵盤輸入)。
總體來說有兩個方法:


1、依賴ssh客戶端定時傳送心跳。
putty、SecureCRT、XShell都有這個功能,但是並不保險。


此外在Linux下: 

#開啟
sudo vim /etc/ssh/ssh_config
# 新增
ServerAliveInterval 20
ServerAliveCountMax 999


即每隔20秒,向伺服器發出一次心跳。若超過999次請求,都沒有傳送成功,則會主動斷開與伺服器端的連線。


2、更一勞永逸的方法是:更改伺服器端,即在ssh遠端。

# 開啟
sudo vim/etc/ssh/sshd_config
# 新增
ClientAliveInterval 30
ClientAliveCountMax 6


ClientAliveInterval表示每隔多少秒,伺服器端向客戶端傳送心跳,是的,你沒看錯。


下面的ClientAliveInterval表示上述多少次心跳無響應之後,會認為Client已經斷開。

所以,總共允許無響應的時間是60*3=180秒。


測試有效




問題現象

用 ssh 命令連線伺服器之後,如果一段時間不操作,再次進入 Terminal 時會有一段時間沒有響應,然後就出現錯誤提示:

Write failed: Broken pipe

只能重新用 ssh 命令進行連線。

解決方法

方法一:如果您有多臺伺服器,不想在每臺伺服器上設定,只需在客戶端的 ~/.ssh/ 資料夾中新增 config 檔案,並新增下面的配置:

ServerAliveInterval 60

方法二:如果您有多個人管理伺服器,不想在每個客戶端進行設定,只需在伺服器的 /etc/ssh/sshd_config 中新增如下的配置:

ClientAliveInterval 60

方法三:如果您只想讓當前的 ssh 保持連線,可以使用以下的命令:

$ ssh -o ServerAliveInterval=60 [email protected]