5 tapaa pitää SSH-etäistunnot ja -prosessit käynnissä yhteyden katkaisun jälkeen


Yksinkertaisesti sanottuna SSH tai Secure Shell on tapa, jolla henkilö voi etäkäyttää toista käyttäjää toisessa järjestelmässä, mutta vain komentorivillä eli ei-GUI-tilassa. Teknisemmin sanottuna, kun siirrymme toiselle käyttäjälle jossain toisessa järjestelmässä ja suoritamme komentoja kyseisellä koneella, se itse asiassa luo pseudopäätteen ja liittää sen sisäänkirjautuneen käyttäjän kirjautumiskuoreen.

Kun kirjaudumme ulos istunnosta tai istunnon aikakatkaisu, kun olemme olleet käyttämättömänä jonkin aikaa, SIGHUP-signaali lähetetään pseudopäätteelle ja kaikki kyseisessä päätteessä suoritetut työt, jopa työt, joiden päätyöt on aloitettu pseudopäätteessä, lähetetään myös SIGHUP-signaali ja ne pakotetaan lopettamaan.

Älä missaa: 5 hyödyllistä käytäntöä SSH-palvelimen suojaamiseksi ja suojattuna

Vain työt, jotka on määritetty ohittamaan tämä signaali, selviävät istunnon lopettamisesta. Linux-järjestelmissä meillä voi olla monia tapoja saada nämä työt toimimaan etäpalvelimella tai millä tahansa koneella myös käyttäjän uloskirjautumisen ja istunnon lopettamisen jälkeen.

Ymmärrä prosesseja Linuxissa

Normaali prosessi

Normaalit prosessit ovat niitä, joilla on istunnon elinikä. Ne käynnistetään istunnon aikana etualalla olevina prosesseina ja päättyvät tietyllä aikavälillä tai kun istunto kirjataan ulos. Näillä prosesseilla on omistajansa kuka tahansa järjestelmän kelvollinen käyttäjä, mukaan lukien pääkäyttäjä.

Orpoprosessi

Orpoprosesseja ovat ne, joilla alun perin oli prosessin luoja, mutta jonkin ajan kuluttua emoprosessi kuoli tai kaatui tahattomasti, jolloin initistä tuli prosessin vanhempi. Tällaisilla prosesseilla on init välittömänä vanhempana, joka odottaa näitä prosesseja, kunnes ne kuolevat tai päätyvät.

Daemon-prosessi

Nämä ovat joitain tarkoituksellisesti orpoja prosesseja, sellaisia prosesseja, jotka jätetään tarkoituksellisesti käynnissä järjestelmään, kutsutaan demoniksi tai tarkoituksellisesti orvoiksi prosesseiksi. Ne ovat yleensä pitkäkestoisia prosesseja, jotka käynnistetään kerran ja sitten irrotetaan mistä tahansa ohjauspäätteestä, jotta ne voivat toimia taustalla, kunnes ne eivät valmistu tai aiheuttavat virheen. Tällaisten prosessien vanhempi kuolee tarkoituksella, jolloin lapsi teloitetaan taustalla.

Tekniikat SSH-istunnon pitämiseksi käynnissä yhteyden katkaisun jälkeen

Voi olla useita tapoja jättää ssh-istunnot käynnissä yhteyden katkaisun jälkeen alla kuvatulla tavalla:

1. Käytä näytön komentoa pitääksesi SSH-istunnot käynnissä

näyttö on teksti-ikkunanhallinta Linuxille, jonka avulla käyttäjä voi hallita useita pääteistuntoja samanaikaisesti, vaihtaa istuntojen välillä, kirjata istunnon lokiin käynnissä oleville istunnoille näytöllä ja jopa jatkaa istuntoa milloin tahansa haluamallamme tavalla. murehtimatta istunnon uloskirjautumisesta tai päätteen sulkemisesta.

näyttöistunnot voidaan aloittaa ja sitten irrottaa ohjauspäätteestä jättäen ne käynnissä taustalle ja jatkaa sitten milloin tahansa ja jopa missä tahansa. Sinun tarvitsee vain aloittaa istunto näytöllä ja halutessasi irrottaa se pseudopäätteestä (tai ohjauspäätteestä) ja kirjautua ulos. Kun sinusta tuntuu, voit kirjautua uudelleen sisään ja jatkaa istuntoa.

Näyttöistunnon aloittaminen

Kun olet kirjoittanut komennon 'screen', olet uudessa näyttöistunnossa. Tämän istunnon aikana voit luoda uusia ikkunoita, liikkua ikkunoiden välillä, lukita näytön ja tehdä monia muita asioita, joita voit tehdä normaali terminaali.

screen

Kun näyttöistunto on alkanut, voit suorittaa minkä tahansa komennon ja pitää istunnon käynnissä irrottamalla istunnon.

Näytön irrottaminen

Juuri kun haluat kirjautua ulos etäistunnosta, mutta haluat pitää kyseisellä koneella luomasi istunnon hengissä, sinun tarvitsee vain irrottaa näyttö päätteestä, jotta siinä ei ole enää ohjauspäätettä. Tämän jälkeen voit turvallisesti kirjautua ulos.

Irrottaaksesi näytön etäpäätteestä paina vain "Ctrl+a " ja heti "d " ja palaat päätteeseen ja näet viestin, että näyttö on irti. Nyt voit turvallisesti kirjautua ulos ja istunto jää eloon.

Jatketaan irrotettua näyttökertaa

Jos haluat jatkaa irrotettua näyttöistuntoa, jonka jätit ennen uloskirjautumista, kirjaudu vain uudelleen etäpäätteeseen ja kirjoita “screen -r ”, jos vain yksi näyttö avautuu ja jos useita näyttöistunnot avataan suorittamalla “screen -r .

screen -r
screen -r <pid.tty.host>

Saat lisätietoja näyttökomennosta ja sen käytöstä seuraamalla linkkiä: Käytä näytön komentoa Linuxin pääteistuntojen hallintaan

2. Käytä Tmuxia (Terminal Multiplexer) pitämään SSH-istunnot käynnissä

Tmux on toinen ohjelmisto, joka on luotu korvaamaan näytön. Siinä on suurin osa näytön ominaisuuksista, mutta muutama lisäominaisuus tekee siitä näyttöä tehokkaamman.

Se mahdollistaa kaikkien näytön tarjoamien vaihtoehtojen lisäksi ruutujen jakamisen vaakasuoraan tai pystysuunnassa useiden ikkunoiden välillä, ikkunaruutujen koon muuttamisen, istunnon seurannan, komentosarjan komentorivitilan avulla jne. Näiden tmuxin ominaisuuksien ansiosta se on nauttinut laajasta käyttöönotosta lähes kaikki Unix-jakelut ja jopa se on sisällytetty OpenBSD:n perusjärjestelmään.

Aloita Tmux-istunto

Kun olet tehnyt ssh:n etäisännällä ja kirjoittanut tmux, siirryt uuteen istuntoon, jossa edessäsi avautuu uusi ikkuna, jossa voit tehdä mitä tahansa tavallisella päätteellä.

tmux

Kun olet suorittanut toiminnot päätteellä, voit irrottaa istunnon ohjauspäätteestä, jotta se menee taustalle ja voit turvallisesti kirjautua ulos.

Irrota Tmux-istunto terminaalista

Joko voit suorittaa “tmux detach ” käynnissä olevan tmux-istunnon aikana tai voit käyttää pikanäppäintä (Ctrl+b ja d). Tämän jälkeen nykyinen istuntosi irrotetaan ja palaat päätelaitteeseen, josta voit kirjautua ulos turvallisesti.

tmux detach

Suljetun Tmux-istunnon jatkaminen

Jos haluat avata uudelleen istunnon, jonka irrotit ja jätit sellaisena kuin kirjauduit ulos järjestelmästä, kirjaudu uudelleen etäkoneeseen ja kirjoita "tmux attach" liittääksesi uudelleen suljettuun istuntoon. on edelleen siellä ja käynnissä.

tmux attach

Saat lisätietoja tmuxista ja sen käytöstä seuraamalla linkkiä: Käytä Tmux Terminal Multiplexeria useiden Linux-päätteiden hallintaan.

3. Käytä nohup-komentoa SSH-istuntojen jatkamiseen

Jos näyttö tai tmux eivät ole sinulle tuttuja, voit käyttää nohup-toimintoa ja lähettää pitkään käynnissä olevan komennon taustalle, jotta voit jatkaa samalla. komento jatkaa suoritusta taustalla. Sen jälkeen voit turvallisesti kirjautua ulos.

Nohup-komennolla kehotamme prosessia jättämään huomioimatta SIGHUP-signaalin, jonka ssh-istunto lähettää lopetettaessa, jolloin komento säilyy myös istunnon uloskirjautumisen jälkeen. Istunnon uloskirjautumisen yhteydessä komento irrotetaan ohjauspäätteestä ja jatkaa käynnissä taustalla demoniprosessina.

Suoritetaan komento nohupilla taustalla

Tässä on yksinkertainen skenaario, jossa olemme suorittaneet find-komennon etsimään tiedostoja taustalla ssh-istunnossa käyttämällä nohup-komentoa, minkä jälkeen tehtävä lähetettiin taustalle ja palautettiin välittömästi antamalla PID ja työ >ID prosessista ([JOBID] PID).

nohup find / -type f $gt; files_in_system.out 2>1 &

Jatketaan istuntoa, jotta näet, onko työ edelleen käynnissä

Kun kirjaudut sisään uudelleen, voit tarkistaa komennon tilan, tuoda sen takaisin etualalle käyttämällä 'fg %JOBID' -komennon edistymistä ja niin edelleen. Alla tuloste näyttää, että työ on valmis, koska se ei näy uudelleenkirjautumisen yhteydessä, ja on antanut tulosteen, joka näytetään.

fg %JOBID

4. Disown-komennon käyttäminen pitääksesi SSH-istunnot käynnissä

Toinen tyylikäs tapa antaa komentosi tai yksittäisen tehtävän suorittaa taustalla ja pysyä hengissä istunnosta uloskirjautumisen tai yhteyden katkaisun jälkeen on käyttää disown-toimintoa.

Hylkääminen, poistaa työn järjestelmän prosessityöluettelosta, joten prosessi on suojattu kaatumiselta istunnon katkaisun aikana, koska se ei vastaanota SIGHUP-viestiä komentotulkilta, kun kirjaudut ulos.

Tämän menetelmän haittapuolena on, että sitä tulisi käyttää vain töissä, jotka eivät vaadi syöttöä stdin:stä ja joiden ei tarvitse kirjoittaa stdoutiin, ellet erityisesti ohjaa uudelleen. töiden syöttö ja tulos, koska kun työ yrittää olla vuorovaikutuksessa stdin- tai stdout- kanssa, se pysähtyy.

Suoritetaan komentoa disown-toiminnolla taustalla

Alla lähetimme ping-komennon taustalle, jotta ut jatkaa toimintaansa ja poistetaan työlistalta. Kuten näkyy, työ jäädytettiin ensin, minkä jälkeen se oli edelleen työluettelossa nimellä Prosessitunnus: 15368.

ping linux-console.net > pingout &
jobs -l
disown -h %1
ps -ef | grep ping

Tämän jälkeen hylkäyssignaali välitettiin työlle ja se poistettiin työlistalta, vaikka se oli edelleen käynnissä taustalla. Työ olisi edelleen käynnissä, kun kirjaudut uudelleen etäpalvelimeen alla olevan kuvan mukaisesti.

ps -ef | grep ping

5. Käytä setsid-komentoa asettaaksesi SSH-istunnot käynnissä

Toinen apuohjelma vaaditun toiminnan saavuttamiseksi on setsid. Nohupilla on haittapuoli siinä mielessä, että prosessin prosessiryhmä pysyy samana, joten nohupilla suoritettava prosessi on alttiina mille tahansa signaalille, joka lähetetään koko prosessiryhmälle (kuten Ctrl + C< /koodi>).

setsid puolestaan varaa suoritettavalle prosessille uuden prosessiryhmän, joten luotu prosessi on kokonaan äskettäin allokoidussa prosessiryhmässä ja voidaan suorittaa turvallisesti ilman kuolemanpelkoa jopa istunnon uloskirjautumisen jälkeen.

Suorita mikä tahansa komento käyttämällä setsidiä

Tässä näkyy, että prosessi 'sleep 10m' on irrotettu ohjauspäätteestä sen luomisesta lähtien.

setsid sleep 10m
ps -ef | grep sleep

Nyt, kun kirjaudut istuntoon uudelleen, tämä prosessi on edelleen käynnissä.

ps -ef | grep [s]leep

Johtopäätös

Mitä tapoja voisit ajatella pitääksesi prosessisi käynnissä jopa uloskirjautumisen jälkeen SSH-istunnosta? Jos sinulla on jokin muu ja tehokas tapa ajatella, mainitse se kommenteissasi.