GNU/Linux >> Znalost Linux >  >> Linux

Jak spolehlivě udržet otevřený tunel SSH?

Zní to, jako bys potřeboval autossh. To bude monitorovat tunel ssh a podle potřeby jej restartovat. Používáme ho několik let a zdá se, že funguje dobře.

autossh -M 20000 -f -N your_public_server -R 1234:localhost:22 -C

Více podrobností o parametru -M zde


Všechny stavové firewally zapomenou na připojení poté, co nějakou dobu neviděli paket pro toto připojení (aby se zabránilo zaplnění stavových tabulek připojeními, kde oba konce skončily bez uzavření připojení). Většina implementací TCP odešle udržovací paket po dlouhé době, aniž by to druhá strana slyšela (2 hodiny jsou běžná hodnota). Pokud však existuje stavový firewall, který zapomene na spojení dříve, než budou moci být odeslány pakety udržující život, dlouhotrvající, ale nečinné spojení zanikne.

Pokud tomu tak je, řešením je zabránit nečinnosti připojení. OpenSSH má možnost nazvanou ServerAliveInterval, kterou lze použít k zabránění příliš dlouhému nečinnosti připojení (jako bonus zjistí, kdy partner zemřel dříve, i když je připojení nečinné).


Použil jsem následující skript Bash k vytváření nových ssh tunelů, když předchozí zemře. Použití skriptu je užitečné, když nechcete nebo nemůžete instalovat další balíčky nebo používat kompilátor.

while true
do
  ssh <ssh_options> [[email protected]]hostname
  sleep 15
done

Všimněte si, že to vyžaduje soubor klíče k automatickému navázání spojení, ale to je i případ autossh.


Linux
  1. Jak používat Ssh-copy-id s Multiple-hop Ssh tunelem?

  2. Jak obnovit/ukončit relaci Ssh po ztrátě připojení?

  3. Jak nastavit Reverse SSH Tunnel v Linuxu

  1. Jak mohu tunelovat veškerý síťový provoz přes SSH?

  2. Jak odstranit zprávu „Připojení k xx.xxx.xx.xxx uzavřeno“?

  3. Jak zjistit, zda se používá připojení ssh ControlMaster

  1. Jak ukončit nereagující připojení SSH v linuxu?

  2. Jak nakonfigurovat písma na vzdáleném připojení X (xdmcp vs. Ssh)?

  3. Jak nastavit ssh tunel pro předávání ssh?