SSH自動斷開后重連的解決方案


注:本文出自博主 Chloneda個人博客 | 博客園 | Github | Gitee | 知乎

本文源鏈接https://www.cnblogs.com/chloneda/p/ssh-connect.html

問題場景

終端連接遠程 SSH 服務,經常會出現長時間無操作后就自動斷開,或者無響應,無法再通過鍵盤輸入,只能強行斷開重連。

那么有沒有辦法保持 SSH 連接不斷開,或者斷開連接后自動重連呢?有的!

解決方法

方案一:客戶端發送心跳

Linux / Unix 下,編輯 ssh 配置文件:

vim /etc/ssh/ssh_config

在文件中添加以下內容:

ServerAliveInterval 20
ServerAliveCountMax 999
  • ServerAliveInterval:表示每隔多少秒,從客戶端向服務器端發送一次心跳(alive 檢測)。
  • ServerAliveCountMax:表示服務端多少次心跳無響應之后,客戶端才會認為與服務器的 SSH 連接已經斷開,然后斷開連接。

上述配置則表示:每隔20秒,向服務器發出一次心跳。若超過999次請求都沒有發送成功,則會主動斷開與服務器端的連接。

方案二:服務器端發送心跳

在服務器端中,編輯 ssh 配置文件:

sudo vim /etc/ssh/sshd_config

在文件中添加以下內容:

ClientAliveInterval 60
ClientAliveCountMax 3
  • ClientAliveInterval:表示每隔多少秒,從服務器端向客戶端發送一次心跳。
  • ClientAliveInterval:表示客戶端多少次心跳無響應之后,服務端才會認為客戶端已經斷開連接,然后斷開連接。

上述配置則表示:每隔60秒,服務器向客戶端發出一次心跳。若客戶端超過3次請求未響應,則會從服務器端斷開與客戶端的連接。

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

其實,依賴 ssh 客戶端定時發送心跳,putty、SecureCRT、XShell 工具也有這個功能。

完!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM