注:本文出自博主 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 工具也有這個功能。
完!