Pokud trávíte hodně času v příkazovém řádku, možná jste narazili na nepříjemný problém, kdy se relace po relativně krátké době nečinnosti ukončí. To je sice žádoucí z hlediska bezpečnosti, ale může to způsobit problémy, když se snažíte provést dlouho běžící operaci.
Obvykle se stane, že se vaše připojení k serveru resetuje, když jste nějakou dobu nečinní, což obvykle způsobí chybu: V takovém případě dojde k resetování spojení partnerem. Chcete-li to obejít, musíte na serveru nastavit volbu Keep Alive.
V této příručce se dozvíte, jak zabránit vypršení času připojení SSH a udržet relaci SSH při životě i po určité nečinnosti v Linuxu.
Zvýšení časového limitu připojení SSH
Na serveru přejděte do konfiguračního souboru /etc/ssh/sshd_config
$ sudo vi /etc/ssh/sshd_config
Přejděte a najděte následující parametry:
#ClientAliveInterval #ClientAliveCountMax
Kde,
-
ClientAliveInterval
: Nastavuje časový interval v sekundách, po jehož uplynutí, pokud nebyla od klienta přijata žádná data, pošle sshd šifrovaným kanálem zprávu s žádostí o odpověď od klienta. Výchozí hodnota je 0, což znamená, že tyto zprávy nebudou klientovi zasílány. Tato volba platí pouze pro protokol verze 2. -
ClientAliveCountMax
: Nastavuje počet zpráv client alive, které mohou být odeslány, aniž by sshd obdržel od klienta nějakou zprávu zpět. Pokud je této prahové hodnoty dosaženo během odesílání živých zpráv klienta, sshd odpojí klienta a ukončí relaci.
Hodnota časového limitu je dána součinem výše uvedených parametrů, tj.Tj.
Timeout value = ClientAliveInterval * ClientAliveCountMax
Příklad řekněme, že jste definovali parametry podle obrázku:
ClientAliveInterval 1200ClientAliveCountMax 3
Hodnota časového limitu bude 1200 sekund * 3 = 3600 sekund. To je ekvivalent 1 hodiny, což znamená, že vaše relace ssh zůstane naživu po dobu nečinnosti 1 hodiny, aniž by došlo k jejímu přerušení.
Alternativně můžete stejného výsledku dosáhnout zadáním samotného parametru ClientAliveInterval.
ClientAliveInterval 3600
Po dokončení znovu načtěte démona OpenSSH, aby se změny projevily.
$ sudo systemctl reload sshd
.