5 sposobów na utrzymanie zdalnych sesji i procesów SSH działających po odłączeniu

5 sposobów na utrzymanie zdalnych sesji i procesów SSH działających po odłączeniu

Ssh Lub Bezpieczna skorupa Mówiąc prosto w sposób, w jaki dana osoba może zdalnie uzyskać dostęp do innego użytkownika w innym systemie, ale tylko w wierszu poleceń i.mi. Tryb niezwiązany z GUI. Mówiąc bardziej technicznie, gdy przechodzimy do innego użytkownika w innym systemie i uruchamiamy polecenia na tym komputerze, faktycznie tworzy pseudo-końcowy i dołącza do powłoki logowania użytkownika zalogowanego.

5 sposobów na utrzymanie sesji SSH po odłączeniu

Kiedy wylogujemy się z sesji lub czasów sesji po tym, jak byliśmy bezczynnością, przez dłuższy czas, Wzdychanie Sygnał jest wysyłany do pseudo-końcowej, a wszystkie zadania, które zostały uruchomione na tym terminalu, nawet zadania, które mają zadania rodziców na pseudo-końcowych, są również wysyłane sygnał westchnienia i są zmuszone do zakończenia.

Nie przegap: 5 Przydatne praktyki zapewniające bezpieczeństwo i ochronę serwera SSH

Tylko skonfigurowane zadania, które zostały ignorowanie tego sygnału, są tymi, które przetrwają zakończenie sesji. W systemach Linux możemy mieć wiele sposobów na uruchomienie tych zadań na zdalnym serwerze lub dowolnym komputerze, nawet po wylogowaniu użytkownika i zakończeniu sesji.

Zrozum procesy w Linux

Normalny proces

Normalne procesy to te, które mają żywotność sesji. Rozpoczynają się ich podczas sesji jako procesy pierwszego planu i kończą w określonym okresie lub po wylogowaniu sesji. Procesy te mają swojego właściciela jako dowolnego z ważnych użytkowników systemu, w tym root.

Proces sieroty

Procesy sieroty to te, które początkowo miały rodzica, który stworzył proces, ale po pewnym czasie proces nadrzędny nieumyślnie umarł lub rozbił się, co czyni początkowe rodzica tego procesu. Takie procesy mają inicjować ich bezpośredni rodzic, który czeka na te procesy, aż umrą lub skończą.

Proces demona

Są to niektóre celowo osierocone procesy, takie procesy, które są celowo pozostawione w systemie, są określane jako demon lub celowo osierocone procesy. Zazwyczaj są to długotrwałe procesy, które są kiedyś zainicjowane, a następnie odłączane od dowolnego terminala kontrolnego, aby mogły działać w tle, dopóki nie zostaną ukończone, lub wyrzucić błąd. Rodzic takich procesów celowo umiera, czyniąc dziecko w tle.

Techniki utrzymywania sesji SSH po odłączeniu

Mogą istnieć różne sposoby pozostawienia sesji SSH działających po odłączeniu, jak opisano poniżej:

1. Korzystanie z polecenia ekranu, aby uruchomić sesje SSH

ekran to menedżer okien tekstu dla Linux, który pozwala użytkownikowi zarządzać wieloma sesjami terminali w tym samym czasie, przełączać się między sesjami, rejestrowanie sesji dla sesji działających na ekranie, a nawet wznowienie sesji w dowolnym momencie, nie martwiąc się o wylogowanie sesji lub terminal jest zamknięty.

Sesje ekranowe można uruchomić, a następnie odłączyć od terminalu kontrolnego, pozostawiając je w tle, a następnie wznowić w dowolnym momencie, a nawet w dowolnym miejscu. Po prostu musisz rozpocząć sesję na ekranie, a kiedy chcesz, odłącz ją od pseudo-terminal (lub terminal kontrolnego) i wyloguj się. Kiedy czujesz, możesz ponownie loginować i wznowić sesję.

Rozpoczęcie sesji ekranu

Po wpisaniu 'ekran' polecenie, będziesz w nowej sesji ekranowej, w tej sesji możesz tworzyć nowe systemy Windows, przemierzać między systemem Windows, zablokować ekran i zrobić wiele innych rzeczy, które możesz zrobić na normalnym terminalu.

Ekran $ 
Rozpoczęta sesja ekranu w Linux

Po uruchomieniu sesji ekranu możesz uruchomić dowolne polecenie i utrzymać sesję, odłączając sesję.

Uruchom polecenia w sesji ekranu
Odłączanie ekranu

Właśnie wtedy, gdy chcesz wylogować się ze zdalnej sesji, ale chcesz zachować sesję, którą utworzyłeś na tym komputerze, to tylko to, co musisz zrobić, to odłączyć ekran od terminalu, aby nie miało ono terminalu kontrolnego. Po wykonaniu tego możesz bezpiecznie wylogować się.

Aby odłączyć ekran od zdalnego terminalu, po prostu naciśnij „Ctrl+A” natychmiast po nim "D" I wrócisz do terminala, widząc wiadomość, że ekran jest odłączony. Teraz możesz bezpiecznie się wylogować, a sesja pozostanie przy życiu.

Odłączanie sesji ekranu Linux
Wznowienie sesji ekranu odłączonej

Jeśli chcesz wznowić sesję na ekranie, którą zostawiłeś przed wylogowaniem, po prostu ponownie login do zdalnego terminalu i wpisz „Ekran -R” na wypadek, gdyby otwiera się tylko jeden ekran i jeśli otwiera się wiele sesji ekranu „Ekran -R”.

$ ekran -r $ ekran -r  
Wznów sesję ekranu odłączoną

Aby dowiedzieć się więcej o poleceniu ekranu i jak go używać, po prostu kliknij link: Użyj polecenia ekranu, aby zarządzać sesjami terminali Linux

2. Korzystanie z TMUX (multiplekser końcowy) do prowadzenia sesji SSH

Tmux to kolejne oprogramowanie, które ma być zastępcą ekran. Ma większość możliwości ekran, z kilkoma dodatkowymi możliwościami, które czynią go silniejszym niż ekran.

Pozwala, oprócz wszystkich opcji oferowanych przez ekran, dzielenie patelów w poziomie lub w pionie między wieloma oknami, rozmiaru zmian okien, monitorowanie aktywności sesji, skryptowanie przy użyciu trybu wiersza poleceń itp. Ze względu na te cechy TMUX cieszy się szerokim przyjęciem przez prawie wszystkie dystrybucje UNIX, a nawet został uwzględniony w podstawowym systemie OpenBSD.

Rozpocznij sesję TMUX

Po wykonaniu SSH na zdalnym hoście i pisaniu Tmux, wejdziesz w nową sesję z otwartym nowym oknem, w którym możesz zrobić wszystko, co robisz na normalnym terminalu.

$ tmux 
Rozpocznij sesję terminali Tmux

Po przeprowadzeniu operacji na terminalu możesz odłączyć tę sesję od terminalu sterującego, aby przeszedł na tło i można bezpiecznie wylogować się.

Wykonaj polecenia Linux w sesji Tmux
Odłącz sesję Tmux od terminalu

Albo możesz uruchomić „TMUX DELECT” Podczas uruchamiania sesji TMUX lub możesz użyć skrótu (Ctrl+B, a następnie D). Po tym obecna sesja zostanie odłączona i wrócisz do swojego terminala, z którego możesz bezpiecznie wylogować się.

$ tmux DEELAT 
Odłącz sesję Tmux w Linux
Wznowienie zamkniętej sesji Tmux

Aby ponownie otworzyć sesję, którą odłączyłeś i pozostawiłeś, tak jak po wylogowaniu z systemu, po prostu ponownie login do zdalnego urządzenia i typu „TMUX ACT” Przygotować do sesji zamkniętej i nadal będzie tam uruchomić.

$ tmux załącz 
Wznów sesję zamkniętą tmux

Aby dowiedzieć się więcej o TMUX i jak go używać, po prostu kliknij link: Użyj multiplekser terminalu Tmux, aby zarządzać wieloma terminalami Linux.

3. Korzystanie z polecenia Nohup, aby nadal uruchamiać sesje SSH

Jeśli nie znasz ekran Lub Tmux, możesz użyć Nohup i wyślij swoje długo działające polecenie na tło, aby móc kontynuować, gdy polecenie będzie wykonywać w tle. Następnie możesz bezpiecznie wylogować się.

Z poleceniem Nohup mówimy procesowi, aby zignorował Wzdychanie sygnał wysyłany przez sesję SSH po zakończeniu, dzięki czemu polecenie utrzymuje się nawet po wylogowaniu sesji. Podczas sesji polecenie polecenie jest wykryte od kontrolowania terminalu i utrzymuje się w tle jako proces demona.

Wykonanie polecenia za pomocą NOHUP na tle

Tutaj jest prosty scenariusz, w którym uruchomiliśmy, znajdź polecenie, aby wyszukać pliki w tle na sesji SSH za pomocą NOHUP, po czym zadanie zostało wysłane na tło z szybkim zwrotem natychmiastowego Pid i praca ID procesu ([Jobid] PID).

# nohup Find / -type f $ gt; files_in_system.out 2> 1 i 
Uruchom polecenie Linux na tle
Wznowienie sesji do wyświetlenia, jeśli zadanie nadal działa

Po ponownym loginie możesz sprawdzić status polecenia, przywróć go na pierwszy plan „FG %Jobid” do monitorowania jego postępów i tak dalej. Poniżej wyjście pokazuje, że zadanie zostało zakończone, ponieważ nie pokazuje się na ponownej loginie, i dało wyświetlane dane wyjściowe.

# FG %Jobid 
Uruchom polecenie Linux na tle

4. Korzystanie z poleceń odchodnie, aby utrzymać sesje SSH

Kolejnym eleganckim sposobem na pozwolenie na polecenie lub jedno zadanie działało w tle i pozostać przy życiu, nawet po wylogowaniu sesji lub odłączeniu jest użycie zapierać się.

Zapierać się, usuwa zadanie z listy zadań procesowych systemu, więc proces jest chroniony przed zabiciem podczas rozłączenia sesji, ponieważ nie odbiera Wzdychanie przez powłokę po wylogowaniu.

Wadą tej metody polega na tym, że powinna być używana tylko do zadań, które nie wymagają żadnego wkładu z stdin i nie musi się nie pisać Stdout, chyba że konkretnie przekierujesz dane wejściowe i wyjściowe zadań, ponieważ kiedy zadanie spróbuje wchodzić w interakcje stdin Lub Stdout, zatrzyma się.

Wykonanie polecenia za pomocą odejścia w tle

Poniżej wysłaliśmy świst polecenie do tła, aby UT nadal działał i został usunięty z listy zadań. Jak widać, praca została po raz pierwszy zawieszona, po czym wciąż znajdowała się na liście pracy Identyfikator procesu: 15368.

$ ping tecmint.com> pingout & $ $ -l $ odejście -h %1 $ ps -ef | Grep ping 
Uruchom polecenia Linux za pomocą odejścia

Po tym, jak ten sygnał odejścia został przekazany do pracy i został usunięty z listy pracy, choć nadal działał na tle. Zadanie będzie działać, gdy ponownie login na zdalnym serwerze, jak pokazano poniżej.

$ ps -ef | Grep ping 
Sprawdź status zadania

5. Korzystanie z polecenia SETSID do uruchomienia sesji SSH

Kolejnym narzędziem do osiągnięcia wymaganego zachowania jest setsid. Nohup ma wadę w tym sensie, że grupa procesowa procesu pozostaje taka sama, więc proces uruchomiony z NOHUP jest podatny na każdy sygnał wysyłany do całej grupy procesowej (jak Ctrl + c).

setsid Z drugiej strony przydziela nową grupę procesów do wykonywanego procesu, a tym samym stworzony proces jest całkowicie w nowo przydzielonej grupie procesów i może bezpiecznie wykonywać bez obawy, że zostanie zabity nawet po wylogowaniu sesji.

Wykonaj dowolne polecenie za pomocą SETSID

Tutaj pokazuje, że proces „Sen 10m” został oderwany od terminalu kontrolnego, od czasu jego utworzenia.

$ setsid sleep 10m $ ps -ef | Grep sen 
Uruchom polecenie Linux za pomocą SETSID

Teraz, kiedy ponownie logujesz sesję, nadal znajdziesz ten proces.

$ ps -ef | grep [s] leep 
Proces Linux działający tło

Wniosek

W jaki sposób możesz pomyśleć, aby proces działał, nawet po wylogowaniu z sesji SSH? Jeśli istnieje inny i wydajny sposób, o którym możesz pomyśleć, wspomnij o swoich komentarzach.