GNU/Linux >> Znalost Linux >  >> Linux

Jak zabránit odpojení SSH, pokud bylo nějakou dobu nečinné

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í hodnota ServerAliveCountMax 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 povolit ssh 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.


Linux
  1. Jak na SSH na Linuxu z Androidu

  2. Jak zjistit, zda je Shell řízen z Ssh?

  3. Jak zadat heslo pro více Windows?

  1. Journalctl:Jak zabránit zkrácení textu v terminálu?

  2. Zabránit spuštění Tmux na Ssh?

  3. Linux – Jak přihlásit uživatele do Tty z Ssh?

  1. Jak zabránit `ls` v třídění výstupu?

  2. Jak zabránit tomu, aby ssh vyžadoval přístupovou frázi klíče pro přihlášení bez hesla

  3. Jak nakonfigurovat D-Bus a SSH X-Forwarding, aby se zabránilo zavěšení SSH při ukončení?