解決SSH自動斷線問題
阿新 • • 發佈:2019-01-09
在連線遠端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]