Aby bylo jasno:Hledám řešení, které začnu jednou po přihlášení, a pak chci ten terminál použít, odejít, vrátit se o dvě hodiny později a pokračovat v práci, aniž bych před odchodem cokoliv psal.
Problém je v tom, že něco (obvykle firewall nebo load-balancer) ruší nečinné relace. Pokud nakonfigurujete udržování relace, udržovací funkce zabrání síťovým zařízením považovat relaci za nečinnou.
Oprava OpenSSH pro Linux / Unix / Cygwin :
Nejjednodušší oprava je povolit udržování ssh klienta; tento příklad odešle ssh keepalive každých 60 sekund:
ssh -o "ServerAliveInterval 60" <SERVER_ADDRESS>
Pokud to chcete povolit ve všech svých relacích, vložte to do /etc/ssh/ssh_config
nebo ~/.ssh/config
:
ServerAliveInterval 60
Další informace naleznete v ssh_config
manuálová stránka
Oprava Putty :
Uložte to do svého PuTTY "Výchozí nastavení"...
- Klikněte na Připojení
- Do pole „Sekundy mezi udržováním života“ zadejte 60
Kromě odpovědi Mika Pennigtona bych vás rád upozornil na ServerAliveCountMax
taky.
ServerAliveInterval
bude posílat upozornění každých x sekund (výchozí je 0 , který tuto funkci zakáže, pokud není nastavena na něco jiného).- To bude provedeno
ServerAliveCountMax
krát, pokud neobdržíte žádnou odpověď. Výchozí hodnotaServerAliveCountMax
je 3 (viz manuálová stránka ssh_config).
Příklad:Pokud nastavíte ServerAliveInterval
na 60 a ponechte ServerAliveCountMax
jak to je, znamená to, že keepalive bude čekat pouze na 3 * 60 = 180 seconds =
3 minut před ukončením.
Chcete-li toto zvýšit např. 2 hodiny pokusu o udržení připojení naživu, můžete udělat:
Na příkaz:
Proto byste měli zvážit nastavení
ssh -o "ServerAliveInterval 60" -o "ServerAliveCountMax 120" <SERVER_ADDRESS>
Trvalé:
Aby byl trvalý, zapište jej na /etc/ssh/ssh_config
(platí pro celý systém) nebo ~/.ssh/config
(platí pouze pro uživatele):
ServerAliveInterval 60
ServerAliveCountMax 120
Poznámka
Jak správně poukázal dislick, toto nemusí být to, co chcete, v závislosti na vaší situaci:
- Pokud chcete relaci rychle ukončit, jakmile server přestane reagovat, měli byste zvolit nízkou hodnotu pro
ServerAliveCountMax
. - Pokud máte větší zájem o udržení již navázaného spojení (např. jedete vlakem a máte vysokou latenci), měli byste zvolit vyšší hodnotu pro
ServerAliveCountMax
povolitssh
k dalšímu pokusu o obnovení připojení.
Viz také:
- unix.stackexchange.com – Jaký je výchozí časový limit nečinnosti pro OpenSSH?
Používám Mobaxterm a také jsem se setkal s tímto problémem. Mobaxterm se také dodává s možností udržet klienta naživu, když je klient nečinný. Přejděte na Settings -> Configuration -> SSH
. Existuje sekce s názvem SSH settings
, zaškrtněte volbu SSH keepalive
. Pak by měl problém zmizet.