注:本文出自博主 Chloneda:個人博客 | 博客園 | Github | Gitee | 知乎
本文源鏈接:https://www.cnblogs.com/chloneda/p/ssh-connect.html
問題場景
終端連接遠程 SSH 服務著蟹,經常會出現長時間無操作后就自動斷開交播,或者無響應,無法再通過鍵盤輸入是偷,只能強行斷開重連。
那么有沒有辦法保持 SSH 連接不斷開溉知,或者斷開連接后自動重連呢鬼譬?有的娜膘!
解決方法
方案一:客戶端發(fā)送心跳
Linux / Unix 下,編輯 ssh 配置文件:
vim /etc/ssh/ssh_config
在文件中添加以下內容:
ServerAliveInterval 20
ServerAliveCountMax 999
- ServerAliveInterval:表示每隔多少秒优质,從客戶端向服務器端發(fā)送一次心跳(alive 檢測)竣贪。
- ServerAliveCountMax:表示服務端多少次心跳無響應之后,客戶端才會認為與服務器的 SSH 連接已經斷開巩螃,然后斷開連接演怎。
上述配置則表示:每隔20秒,向服務器發(fā)出一次心跳牺六。若超過999次請求都沒有發(fā)送成功颤枪,則會主動斷開與服務器端的連接。
方案二:服務器端發(fā)送心跳
在服務器端中淑际,編輯 ssh 配置文件:
sudo vim /etc/ssh/sshd_config
在文件中添加以下內容:
ClientAliveInterval 60
ClientAliveCountMax 3
- ClientAliveInterval:表示每隔多少秒畏纲,從服務器端向客戶端發(fā)送一次心跳。
- ClientAliveInterval:表示客戶端多少次心跳無響應之后春缕,服務端才會認為客戶端已經斷開連接盗胀,然后斷開連接。
上述配置則表示:每隔60秒锄贼,服務器向客戶端發(fā)出一次心跳票灰。若客戶端超過3次請求未響應,則會從服務器端斷開與客戶端的連接宅荤。
所以屑迂,總共允許無響應的時間是 60 * 3 = 180 秒以內。
其實冯键,依賴 ssh 客戶端定時發(fā)送心跳惹盼,putty、SecureCRT惫确、XShell 工具也有這個功能手报。
完蚯舱!