Sshsshd_config 中的選項
sshd_config 中的選項 ServerAliveInterval
和 ClientAliveInterval
究竟是做什麼的?
我找到了這個問題,但很抱歉我不太了解這兩個變數的設置,
ServerAliveInterval
並ClientAliveInterval
在接受的回復中提到。如果我的本地伺服器超時,我應該將此值設置為零嗎?那麼它永遠不會超時嗎?我應該將其設置為 300 秒還是什麼?我的問題很簡單,當我暫停然後根據響應取消暫停筆記型電腦時,我的一些連接超時,
Write failed: Broken pipe
而有些則沒有。如何正確配置本地 sshd,以免它們因管道損壞而失敗?
ServerAliveInterval :客戶端在向伺服器發送空數據包之前等待的秒數(以保持連接處於活動狀態)。
ClientAliveInterval :伺服器在向客戶端發送空數據包之前等待的秒數(以保持連接處於活動狀態)。
將值設置為 0(預設值)將禁用這些功能,因此如果空閒時間過長,您的連接可能會斷開。
ServerAliveInterval 似乎是保持連接活動的最常見策略。為了防止管道損壞問題,這是我在 .ssh/config 文件中使用的 ssh 配置:
Host myhostshortcut HostName myhost.com User barthelemy ServerAliveInterval 60 ServerAliveCountMax 10
上述設置將按以下方式工作,
- 客戶端將等待 60 秒(ServerAliveInterval 時間)空閒,並向伺服器發送“no-op null 數據包”並等待響應。如果沒有響應,那麼它將繼續嘗試上述過程,直到 10 (ServerAliveCountMax) 次(600 秒)。如果伺服器仍然沒有響應,則客戶端斷開 ssh 連接。
伺服器端的 ClientAliveCountMax 也可能有所幫助。這是允許客戶端在斷開連接之前保持無響應的時間限制。預設值為 3,如三個 ClientAliveInterval。