SSH (Secure Shell) je šifrovaný síťový systém typu end-to-end, který uživatelům umožňuje vzdálený přístup z klienta na server nebo systém. Vzhledem k jeho asymetrickému kryptografickému bezpečnostnímu systému je do značné míry bezpečný a bezpečný přístup k serveru i z nebezpečné klientské sítě. Ale někdy kvůli nečinnosti nebo špatnému síťovému signálu může dojít k odpojení vzdáleného přístupu SSH. Ať už je důvod jakýkoli, jako správce Linuxu je životně důležitý úkol udržet relace a procesy SSH v chodu i po odpojení.
Důvody, proč se relace SSH odpojují
Stručně řečeno, chyba proxy tunelu SSH, časový limit sítě, použití nesprávného síťového portu nebo dokonce nepřihlášení do systému jako uživatel root vás také mohou odpojit od vzdálené správy SSH. V tomto příspěvku budeme diskutovat o nejčastějších otázkách týkajících se SSH; jak udržet relace a procesy SSH spuštěné po odpojení.
1. Pokračujte ve spouštění relací SSH pomocí screen
Příkaza
screen
příkaz je nejpoužívanějším a nejužitečnějším příkazem pro správu SSH. screen
může vyřešit problémy s názvy hostitelů pro adresy IPv4 i IPv6. S funkcemi root, screen
příkaz se může odhlásit nebo zrušit relaci z konce klienta na konec serveru. Pokud jste v Linuxu SSH úplným nováčkem, zde jsou některé CLI, které vám mohou pomoci nainstalovat a najít manuály na screen
příkaz.
Pro Ubuntu:
$ sudo apt install screen
Pro OpenSUSE:
$ sudo zypper install screen
Pro Arch Linux:
- -$ sudo pacman -S screen
Pro Red Hat Enterprise Linux:
$ sudo yum install screen
Po dokončení instalace začněte sledovat úvodní obrazovku systému.
$ screen $ screen --help
Jakmile budete mít přístup, SSH na server, chcete získat přístup vzdáleně. Pokud plánujete dlouhou noční práci ze své stanice, ale nechcete svého klienta SSH vypnout, můžete použít screen
příkaz. To může odpojit vaši relaci obrazovky, ale žádný strach, úkoly, které jste zahájili, budou dokončeny.
Chcete-li obrazovku odpojit, stiskněte Ctrl-A
a poté Ctrl-D
z vaší klávesnice. Ke sledování postupu práce se můžete kdykoli přihlásit ze svého terminálu. Chcete-li se znovu připojit nebo připojit k existující relaci, použijte následující CLI.
$ screen -r screen -D -r
2. Pokračujte ve spouštění relací SSH pomocí tmux
Nástroj
Tmux neboli terminálový multiplexer je velmi oblíbený a užitečný nástroj pro programátory a systémové administrátory, který umožňuje uživatelům přepínat mezi programem a programem na stejném terminálu. Chcete-li, aby relace SSH běžely na pozadí, tmux
může být velmi rychlým řešením. Může odpojit a znovu připojit aplikace, kde procesy běží na pozadí. Zde je návod k instalaci tmux
pro distribuce Linuxu.
Pro Arch Linux:
$ sudo pacman -S tmux
Pro Red Hat Enterprise Linux:
$ sudo yum install tmux
Pro Ubuntu:
$ sudo apt-get install tmux
Pro OpenSUSE:
$ sudo zypper install tmux
Po instalaci tmux
, spusťte tmux session
pomocí terminálových příkazů. Instalace nezabere mnoho času. Jakmile dokončíte instalaci, můžete nyní začít s tmux
. Chcete-li spustit tmux
, stačí do terminálu zadat tmux.
$ tmux
Pokud potřebujete spustit více než jeden terminálový multiplexer, aby všechny relace SSH běžely na pozadí, v takovém případě můžete mít potíže s přepínáním mezi tmux
na tmux
. Zde jsou příkazové řádky pro přepínání jedné formy do druhé.
$ tmux detach $ tmux attach $ tmux attach -t 2
Chcete-li zkontrolovat všechny tmux
použijte list
tmux příkaz.
$ tmux ls
3. Pokračujte ve spouštění relací SSH pomocí byobu
Nástroj
Nástroj byobu se většinou používá pro vzdálenou správu SSH a monitorování na obrazovce v systému Linux. Jedná se o software s otevřeným zdrojovým kódem a lze jej používat společně s tmux
nebo screen
nářadí. Aktuální stav, oznámení a zprávy můžete zobrazit pomocí byobu
nářadí. Ačkoli byobu
je standardně nainstalován s Ubuntu. Ale pokud tomu tak není, můžete jej nainstalovat do svého počítače se systémem Linux. Chcete-li zkontrolovat, zda byobu
zda je nebo není ve vašem systému nainstalováno, zkontrolujte ostatní verze byobu.
$ byobu --version
Poté povolte byobu, pomůže to udržet vaše relace SSH spuštěné na pozadí i po odpojení.
$ byobu-enable
Zde jsou instalační procesy vysvětleny pomocí CLI.
Pro Ubuntu:
$ sudo apt install byobu
Pro OpenSUSE:
$ sudo zypper addrepo https://download.opensuse.org/repositories/utilities/openSUSE_Leap_42.3/utilities.repo
$ sudo zypper refresh $ sudo zypper install byobu
Pro Arch Linux:
$ yaourt -S byobu $ packer -S byobu
Pro Red Hat Enterprise Linux:
$ sudo yum install byobu
Pro Fedoru:
$ sudo dnf install byobu
Chcete-li začít s byobu
, do terminálu zadejte byobu a stiskněte Enter.
$ byobu
Nyní, pokud používáte tmux
nebo screen
, můžete si vybrat a vybrat mezi kteroukoli z nich pro spolupráci na backendu.
$ byobu-select-backend
Nyní můžete spravovat a udržovat své relace SSH spuštěné na pozadí po odpojení pomocí funkčních kláves systémové klávesnice. Chcete-li začít s SSH vedle byobu, stiskněte CTRL+SHIFT+F2
z klávesnice, abyste povolili prostředí SSH. Chcete-li přesunout své relace SSH vpřed a vzad, můžete použít ALT+UP
a ALT+DOWN
.
Chcete-li odpojit své relace SSH, stiskněte F6
z klávesnice. Nyní, pokud hledáte odpojení, ale neodpojujete relaci, tady to máte. Chcete-li odpojit relace SSH a přesto se připojit, stiskněte SHIFT+F6
. Zde je pro vás další příkaz klávesnice navíc. Chcete-li zachovat pouze aktuální relaci obrazovky a zavřít všechna ostatní okna, stiskněte ALT+F6
.
4. Pokračujte ve spouštění relací SSH pomocí nohup
Příkaz
nohup
nebo příkaz „no hangup“ je velmi užitečný alternativní nástroj pro obrazovku nebo tmux. Umožňuje také uživatelům udržovat relace SSH spuštěné i po odpojení. nohup
příkaz říká systému, aby spouštěl všechny procesy na pozadí tím, že zabrání zavěšení signálu (SIGHUP).
Chcete-li zkontrolovat nohup
manuály a možnosti z vašeho linuxového terminálu, zadejte do terminálu následující příkaz a stiskněte Enter.
$ nohup options
Chcete-li zkontrolovat aktuálně aktivní seznamy úloh, použijte -l
příkaz z vašeho terminálu.
$ jobs -l
Nyní pro připojení SSH, abyste se vyhnuli ztrátě připojení a udrželi vaše relace spuštěné i po odpojení, použijte příkazové řádky nohup následující za vaší úlohou. Výstupní seznam svých úloh můžete také získat v textovém souboru pomocí příkazu cat spolu s příkazem nohup.
$ nohup ./hello.sh $ cat nohup.out
Chcete-li spustit proces na pozadí, můžete použít &
symbol hned za nohup
příkaz. Například, pokud chci otestovat ping pro wordpress-408970-1286763.cloudwaysapps.com na pozadí, příkazový řádek bude stejný jako na následujícím řádku. A když si myslíte, že je vaše práce hotová, chcete-li vidět výsledek, použijte pgrep
příkaz.
$ nohup ping www.ubuntupit.com & $ pgrep -a ping
5. Pokračujte ve spouštění relací SSH pomocí disown
Příkaza
Pokud nemáte oprávnění root systému, možná toto vyřeší váš problém. disown
příkaz může učinit jakoukoli úlohu neuvedenou ve vašem běžícím systémovém protokolu. Může tedy skrýt probíhající proces, aby se zabránilo všem chybám automatického odhlášení nebo zablokování signálu (SIGHUP). Ve skutečnosti můžete použít příkaz diswon process management k udržení vašich relací SSH v chodu tím, že skryjete svůj úkol.
Chcete-li odstranit nebo skrýt svůj úkol ze správce úloh, použijte příkaz diswon v terminálu.
$ disown <task>
Chcete-li zkontrolovat aktuální stav úlohy, použijte příkaz current shell.
$ current shell
Můžete také nastavit seznam úloh pomocí jednoho příkazu terminálu.
$ disown jobs1 $ disown jobs1 jobs2 ... jobsn
A ke kontrole seznamu úkolů použijte -l
příkaz.
$ jobs -l
Chcete-li z okna odstranit všechny aktuální úlohy, zadejte -a
syntaxe následující za příkazem disown.
$ disown -a
Chcete-li z okna odstranit pouze jednu nebo běžící úlohu, použijte -r
syntaxe následovaná příkazem diswon.
$ disown -r
Nyní pro SSH, chcete-li po připojení relace spustit úlohu na pozadí, použijte -h
syntax. Tento proces může udržet vaše relace SSH spuštěné i po odpojení.
$ disown -h jobID $ disown -h %2
Oprava timeout
Chyba SSH v RHEL
Když jste připojeni k SSH na Red Hat Enterprise Linux (RHEL), můžete mít častý problém s časovým limitem a ztratit připojení. K tomuto problému dochází z důvodu neplatného času odezvy formuláře buď na straně klienta, nebo na straně hostitele. V kořenovém adresáři Red Hat musíte najít a upravit sshd_config.txt
soubor k vyřešení tohoto problému s časovým limitem. Až budete hotovi, můžete své připojení SSH obnovit i po odpojení.
Tam uvnitř sshd_config.txt
, najdete dvě možnosti pojmenované jako ClientAliveInterval
a ClientAliveCountMax
, musíte upravit tyto soubory protokolu, abyste maximalizovali dobu odezvy serveru na klienta. Interval časového limitu se vypočítá vynásobením hodnot ClientAliveInterval a ClientAliveCountMax.
Vše, co potřebujete, je upravit dobu trvání těchto dvou hodnot podle doby odezvy vašeho systému a sítě. Chcete-li maximalizovat čas 10 minut pro ukončení klientského intervalu a 5krát pro počet klientů, pak váš textový registr uvnitř sshd_config.txt
soubor bude vypadat jako níže. A potom restartujte SSH.
ClientAliveInterval 10m ClientAliveCountMax 5
Poslední myšlenky
Pro správce systému je udržení relací a procesů SSH v chodu klíčovou úlohou pro uspokojení klienta a splnění úkolu. Odpojení a časté ztráty relací jsou velmi nepříjemné a obtěžující. V tomto příspěvku jsme se tedy pokusili diskutovat a ilustrovat důvody, proč se relace SSH odpojují, a také jsme popsali všechny možné metody, jak udržet relace SSH v chodu po odpojení.
Pokud jste si někdy prošli potížemi s odpojením relace SSH a víte, jak nepříjemné to může být, podělte se s námi o své zkušenosti. A také komentujte, pokud chcete něco přidat nebo se zeptat na cokoli souvisejícího s tímto příspěvkem v sekci komentářů. Nezapomeňte tento příspěvek sdílet se svými přáteli na sociálních sítích.