Ssh

sshd_config 中的選項 ServerAliveIntervalClientAliveInterval 究竟是做什麼的?

  • January 24, 2021

我找到了這個問題,但很抱歉我不太了解這兩個變數的設置,ServerAliveIntervalClientAliveInterval在接受的回復中提到。如果我的本地伺服器超時,我應該將此值設置為零嗎?那麼它永遠不會超時嗎?我應該將其設置為 300 秒還是什麼?

我的問題很簡單,當我暫停然後根據響應取消暫停筆記型電腦時,我的一些連接超時,Write failed: Broken pipe而有些則沒有。如何正確配置本地 sshd,以免它們因管道損壞而失敗?

ServerAliveInterval :客戶端在向伺服器發送空數據包之前等待的秒數(以保持連接處於活動狀態)。

ClientAliveInterval :伺服器在向客戶端發送空數據包之前等待的秒數(以保持連接處於活動狀態)。

將值設置為 0(預設值)將禁用這些功能,因此如果空閒時間過長,您的連接可能會斷開。

ServerAliveInterval 似乎是保持連接活動的最常見策略。為了防止管道損壞問題,這是我在 .ssh/config 文件中使用的 ssh 配置:

Host myhostshortcut
    HostName myhost.com
    User barthelemy
    ServerAliveInterval 60
    ServerAliveCountMax 10

上述設置將按以下方式工作,

  1. 客戶端將等待 60 秒(ServerAliveInterval 時間)空閒,並向伺服器發送“no-op null 數據包”並等待響應。如果沒有響應,那麼它將繼續嘗試上述過程,直到 10 (ServerAliveCountMax) 次(600 秒)。如果伺服器仍然沒有響應,則客戶端斷開 ssh 連接。

伺服器端的 ClientAliveCountMax 也可能有所幫助。這是允許客戶端在斷開連接之前保持無響應的時間限制。預設值為 3,如三個 ClientAliveInterval。

引用自:https://unix.stackexchange.com/questions/3026