Řešení 1:
Zkuste nastavit ClientAliveInterval (např. 60) a TCPKeepAlive (ano nebo ne) na příslušné hodnoty na straně serveru sshd.conf.
To by mělo udržet vaši relaci naživu, i když se spojení na několik minut ztratí.
Řešení 2:
AKTUALIZACE:Aktuální odpověď naleznete v odpovědi zero_r níže
To není odpověď, ale řešení. Použijte obrazovku.
Při prvním přihlášení spusťte obrazovku. Získáte další shell, spusťte v něm příkazy. Pokud jste odpojeni, proces obrazovky udržuje terminál naživu, aby váš shell a procesy, které spouští, nespadly. Když se znovu připojíte, spusťte 'screen -r' pro pokračování.
Konfigurování a používání obrazovky obsahuje spoustu dalších věcí, ale výše uvedené by mělo váš problém vyřešit.
Řešení 3:
Jak bylo uvedeno výše, GNU Screen je správná cesta. Umožní vám mít na vzdáleném boxu „relaci obrazovky“, ve které můžete spouštět více příkazů prostřednictvím více „oken obrazovky“. To se jednoduše odpojí, pokud vaše nadřazené připojení SSH zanikne, a všechny podprocesy v něm běžící zůstanou živé a zdravé.
'man screen
' je váš přítel jako obvykle a balíček OS by se měl jmenovat 'screen
' pokud není nainstalován ve výchozím nastavení.
Základy jsou:
-
Spusťte relaci obrazovky (na vašem vzdáleném hostiteli):
$ screen
-
Odpojení od relace obrazovky:CTRL-A , d
-
Po opětovném přihlášení se znovu připojte k relaci obrazovky:
$ screen -d -r
-
Otevřete další „okno“ obrazovky:CTRL-A , c
-
Procházejte otevřená okna na obrazovce:CTRL-A , mezera
Je toho spousta skvělých věcí, které můžete dělat s obrazovkou. Používám ho přes 10 let a stále zjišťuji nové funkce. Je to můj oblíbený unixový nástroj.
Řešení 4:
Nemůžu uvěřit, že se nikdo nezmínil o MOSH;
Mosh je samostatný protokol, který se může připojit k procesu přihlašování SSH, udržuje vaši relaci naživu po dnech odpojení, změny IP, vysoké latence a tak dále. Na domovské stránce je to vysvětleno lépe, než to dokážu vysvětlit já, takže jsem zkopíroval popis níže. Moje zkušenosti a rady jsou, že to používám na mobilu s Androidem, je to záchrana života při cestování a SSH'ingu. Totéž platí na mém notebooku, když jsem připojený k mobilu například ve vlaku. Doporučuji kompilovat ze zdroje, abyste získali nejnovější verzi, repo verze pro mě uvnitř Ubuntu má v sobě několik nepříjemností, které jsou opraveny v nejnovější verzi (v době psaní).
Mosh (mobilní prostředí)
Aplikace vzdáleného terminálu, která umožňuje roaming, podporuje přerušované připojení a poskytuje inteligentní místní odezvu a úpravu úhozů uživatelských kláves.
Mosh je náhrada za SSH. Je robustnější a citlivější, zejména přes Wi-Fi, mobilní a dálková spojení.
Mosh je bezplatný software dostupný pro GNU/Linux, FreeBSD, Solaris, MacOS X a Android.
Funkce z webu:
-
Změňte IP. Zůstaňte ve spojení :Mosh se automaticky pohybuje, když se pohybujete mezi internetovými připojeními. Používejte Wi-Fi ve vlaku, Ethernet v hotelu a LTE na pláži:zůstanete přihlášeni. Většina síťových programů ztratí připojení po roamingu, včetně SSH a webových aplikací, jako je Gmail. Mosh je jiný.
-
Snadné sny :S Mosh můžete svůj notebook uspat a probudit později, přičemž vaše připojení zůstane nedotčené. Pokud se vaše připojení k internetu přeruší, Mosh vás upozorní – ale připojení se obnoví, když se síťová služba vrátí.
-
Zbavte se zpoždění sítě :SSH čeká na odpověď serveru, než vám ukáže vaše vlastní psaní. To může způsobit nepříjemné uživatelské rozhraní. Mosh je jiný:poskytuje okamžitou odezvu na psaní, mazání a úpravy řádků. Dělá to adaptivně a funguje i v programech na celou obrazovku, jako jsou emacs a vim. Při špatném připojení jsou vynikající předpovědi podtrženy, takže nebudete uvedeni v omyl.
-
Žádný privilegovaný kód. Žádný démon :K instalaci nebo spuštění Mosh nemusíte být superuživatel. Klient a server jsou spustitelné soubory spouštěné běžným uživatelem a trvají pouze po dobu trvání připojení.
-
Stejný způsob přihlášení :Mosh nenaslouchá na síťových portech ani neověřuje uživatele. Klient mosh se přihlásí k serveru přes SSH a uživatelé předloží stejné přihlašovací údaje (např. heslo, veřejný klíč) jako dříve. Poté Mosh spustí mosh server vzdáleně a připojí se k němu přes UDP.
-
Běží uvnitř vašeho terminálu, ale lépe :Mosh je program příkazového řádku, jako je ssh. Můžete jej použít v rámci xterm, gnome-terminal, urxvt, Terminal.app, iTerm, emacs, screen nebo tmux. Ale mosh byl navržen od začátku a podporuje pouze jednu znakovou sadu:UTF-8. Opravuje chyby Unicode v jiných terminálech a v SSH.
-
Control-C funguje skvěle :Na rozdíl od SSH protokol založený na UDP od mosh zvládá ztráty paketů elegantně a nastavuje snímkovou rychlost na základě podmínek sítě. Mosh nezaplňuje síťové vyrovnávací paměti, takže Control-C
vždy pracuje na zastavení běžícího procesu.
Řešení 5:
autossh sleduje vaše připojení a pokud selže, znovu se připojí. Je spolehlivější než udržovací. Pokud se připojíte k relaci obrazovky, budete pokračovat přímo od místa, kde jste se odpojili (viz rscreen
který je dodáván s autossh)