Našel jsem tuto otázku, ale je mi líto, že úplně nerozumím nastavení dvou proměnných ServerAliveInterval
a ClientAliveInterval
uvedené v přijaté odpovědi. Pokud můj místní server vyprší, mám tuto hodnotu nastavit na nulu? Nevyprší pak nikdy časový limit? Mám to místo toho nastavit na 300 sekund nebo tak něco?
Moje otázka jednoduše zní, že některým z mých připojení vyprší časový limit, když pozastavím a poté uvolním svůj notebook s odpovědí Write failed: Broken pipe
a někteří ne. Jak mohu správně nakonfigurovat místní sshd, aby neselhaly s prasklým potrubím?
Přijatá odpověď:
ServerAliveInterval:počet sekund, po které klient bude čekat před odesláním nulového paketu na server (aby spojení zůstalo živé).
ClientAliveInterval:počet sekund, po které server bude čekat před odesláním nulového paketu klientovi (aby spojení zůstalo živé).
Nastavením hodnoty 0 (výchozí) tyto funkce deaktivujete, takže vaše připojení může přerušit, pokud bude příliš dlouho nečinné.
ServerAliveInterval se zdá být nejběžnější strategií, jak udržet připojení naživu. Abychom předešli problému s poškozeným potrubím, zde je konfigurace ssh, kterou používám v souboru .ssh/config:
Host myhostshortcut
HostName myhost.com
User barthelemy
ServerAliveInterval 60
ServerAliveCountMax 10
Výše uvedené nastavení bude fungovat následujícím způsobem,
- Klient bude čekat v nečinnosti po dobu 60 sekund (čas ServerAliveInterval) a odešle na server „nulový paket bez operace“ a očekává odpověď. Pokud nepřijde žádná odpověď, bude se výše uvedený proces zkoušet až 10krát (ServerAliveCountMax) (600 sekund). Pokud server stále neodpovídá, klient odpojí ssh připojení.
KlientAliveCountMax na straně serveru může také pomoci. Toto je limit, jak dlouho může klient zůstat bez odezvy, než bude odpojen. Výchozí hodnota je 3, stejně jako u tří ClientAliveInterval.