Yleisin SSH-komentojen käyttö ja konfigurointi Linuxissa


Lyhyesti: Tässä oppaassa käsittelemme SSH:n yleisiä käyttötapauksia. Keskustelemme myös yleisesti käytetyistä SSH-kokoonpanoista, joita voidaan käyttää jokapäiväisessä elämässä tuottavuuden parantamiseksi.

Secure Shell (SSH) on laajalti käytetty verkkoprotokolla, jonka avulla voimme olla vuorovaikutuksessa etäisäntien kanssa turvallisella tavalla. Se tarjoaa suojan salaamalla kaiken niiden välisen viestinnän.

Kuinka käyttää SSH-komentoa Linuxissa

Tässä osiossa käsittelemme joitakin SSH-protokollan suosittuja käyttötapauksia.

On olemassa useita tapoja olla vuorovaikutuksessa Linux-etäisäntien kanssa käyttämällä protokollia, kuten telnet, netcat jne. Nämä eivät kuitenkaan ole turvallisia salauksen puuttumisen vuoksi. Voimme käyttää SSH-protokollaa mahdollistamaan turvallisen viestinnän isäntien välillä.

Meidän on käytettävä SSH-asiakasta ollaksemme vuorovaikutuksessa etäisännän kanssa. Linuxille on saatavilla runsaasti GUI- ja CLI-pohjaisia asiakkaita. Käytämme kuitenkin koko tässä oppaassa komentoriviohjelmaa nimeltä ssh. Oletuksena ssh-apuohjelma on saatavilla useimmissa Linux-jakeluissa.

SSH-komennon syntaksi on seuraava:

$ ssh [OPTIONS]  [COMMANDS] [ARGS]

Tässä hakasulkeet ([]) edustavat valinnaisia argumentteja, kun taas kulmasulut (<>) edustavat pakollisia argumentteja.

Muodostetaan yhteys etäisäntään ssh-asiakkaalla:

$ ssh -l root 192.168.19.130

Tässä esimerkissä määritimme kirjautumisnimen -l-vaihtoehdolla ja kohde on 192.168.19.130. SSH-yhteys muodostetaan oikean salasanan syöttämisen jälkeen. Tästä eteenpäin voimme suorittaa komennot etäisännässä aivan kuten paikallisessa järjestelmässä.

# hostname

Voit lopettaa istunnon käyttämällä exit-komentoa tai ctrl+D-näppäinyhdistelmää.

On tärkeää huomata, että meidän täytyy todentaa etäisännän kanssa jokaista uutta istuntoa varten. Jotta vältytään syöttämästä salasanoja joka kerta, voimme määrittää salasanattoman SSH-kirjautumisen.

Edellisessä osiossa näimme kuinka muodostaa yhteys etäisäntään, joka sopii vain silloin, kun aiomme käyttää etäisäntää pidempään. Joskus meidän on vain suoritettava yksi tai kaksi komentoa etäisännässä. Tällaisissa tapauksissa voimme suorittaa kyseiset komennot luomatta pitkäaikaista istuntoa.

Suoritetaan hostname-komento etäisännässä:

$ ssh -l root 192.168.19.130 hostname

Samalla tavalla voimme suorittaa useita komentoja Linux-etäkoneella:

$ ssh -l root 192.168.19.130 'hostname; pwd'

On tärkeää huomata, että komennot on suljettava lainausmerkkien sisällä ja erotettava puolipisteellä (;). Jos haluat suorittaa komentoja useilla Linux-etäisännillä, lue artikkelimme – Pssh – Suorita komentoja useilla Linux-etäisännillä.

Samoin kuin komennot voimme myös suorittaa paikallisen komentosarjan etäisännässä. Ymmärretään tämä esimerkin avulla.

Luo ensin yksinkertainen shell-skripti paikalliselle koneelle, jolla on suoritettavat oikeudet:

$ cat script.sh 

hostname
pwd

Suoritetaan se nyt etäisännässä:

$ ssh [email protected] 'bash -s' < ./script.sh 

Tässä esimerkissä olemme käyttäneet bashin vaihtoehtoa -s lukeaksesi komentosarjan vakiosyötteestä.

Työskentelemme tiedostojen ja hakemistojen kanssa hyvin usein. Yksi yleinen toiminto, jota käyttäjät suorittavat, on hakemistojen ja tiedostojen kopioiminen. Aivan kuten paikalliset koneet, voimme kopioida tiedostoja ja hakemistoja etäisäntien välillä scp-komennolla, joka kopioi tiedostot turvallisesti SSH-protokollan avulla.

Kopioidaan script.sh-tiedosto etäisännän /tmp-hakemistoon:

$ scp script.sh [email protected]:/tmp

Tarkista nyt, että tiedosto on kopioitu:

$ ssh [email protected] 'ls /tmp/script.sh'

Samalla tavalla voimme käyttää scp-komentoa hakemistojen kopioimiseen. Meidän on kuitenkin käytettävä komennon kanssa vaihtoehtoa -r.

SSH tukee tietojen pakkaamista gzip-pakkausalgoritmilla, joka pakkaa kaikki mahdolliset tietovirrat, kuten stdin, stdout, stderr ja niin edelleen. Tämä vaihtoehto on erittäin kätevä käytettäessä hitaita verkkoyhteyksiä.

Voimme ottaa pakkauksen käyttöön SSH:ssa käyttämällä -C-vaihtoehtoa:

$ ssh -C -l root 192.168.19.130 'hostname' 

Linux-käyttäjien on usein suoritettava virheenkorjaus SSH-istunnoissa tutkiakseen erilaisia SSH-yhteyksiin ja konfiguraatioihin liittyviä ongelmia. Tällaisissa tapauksissa voimme ottaa käyttöön monisanaisen tilan, joka tulostaa nykyisen istunnon virheenkorjauslokit.

Otetaan monisanainen tila käyttöön -v-vaihtoehdolla:

$ ssh -v -l root 192.168.19.130 hostname

Tämän lisäksi voimme lisätä monisanaisuutta käyttämällä useita -v-vaihtoehtoja.

  • -v – asettaa monisanaisuustason arvoon 1 ja antaa tietoja asiakaspuolen toiminnoista.
  • -vv – asettaa monisanaisuustason arvoon 2 ja antaa tietoja asiakas- ja palvelinpuolen toiminnoista.
  • -vvv – asettaa monisanaisuustason arvoon 3 ja antaa tarkempia tietoja asiakas- ja palvelinpuolen toiminnoista.

Suurin SSH:n tukema monisanaisuustaso on 3. Katsotaanpa tätä käytännössä:

$ ssh -vvv -l root 192.168.19.130 hostname

Yllä olevassa esimerkissä debug1 edustaa monisanaisuustason 1 mahdollistamaa debug-viestiä. Vastaavasti debug2 ja debug3 edustavat debug-sanomia, jotka on otettu käyttöön monisanaisuustasoilla 2 ja 3.

Voimme käyttää Escape-sekvenssejä SSH:n kanssa asiakaspääteistuntojen hallintaan. Keskustellaan yleisesti käytetyistä pakotussarjoista sopivien käyttötapausten kanssa.

Joskus meidän on suoritettava muutamia toimintoja paikallisella koneella lopettamatta nykyistä SSH-istuntoa. Tällaisessa tilanteessa voimme keskeyttää nykyisen istunnon käyttämällä ~ + ctrl+z-näppäinsarjaa.

Kirjaudu ensin sisään etäisäntään ja suorita hostname-komento:

$ ssh -l root 192.168.19.130
# hostname

Seuraavaksi keskeytä nykyinen istunto kirjoittamalla ensin tilde (~) ja paina sitten ctrl+z-näppäimiä. On tärkeää huomata, että tilde-merkkiä (~) ei näytetä stdoutissa ennen kuin painamme ctrl+z.

Tarkistetaan nyt, että istunto on keskeytetty:

$ jobs

Täällä voimme nähdä, että nykyinen SSH-istunto on käynnissä taustalla.

Jatketaan istuntoa uudelleen fg-komennolla ja suoritetaan isäntänimi-komento:

$ fg %1

Olen varma, että olet nähnyt jäätyneet SSH-istunnot, jotka tapahtuvat, kun epävakaa verkko keskeyttää istunnon. Täällä emme voi keskeyttää istuntoa exit-komennolla. Voimme kuitenkin lopettaa sen käyttämällä \~ + .\ näppäinsarjaa.

Kirjaudu ensin sisään etäisäntään:

$ ssh -l root 192.168.19.130

Käytä nyt näppäinyhdistelmää \~ + .\ nykyisen istunnon lopettamiseksi.

Tässä esimerkissä näemme, että SSH näyttää viestin – Yhteys numeroon 192.168.19.130 suljettu.

Mielenkiintoinen asia on, että kaikki tuetut erotussekvenssit luetellaan on olemassa. Voimme käyttää \~ + ? estosekvenssiä tuettujen erotussekvenssien luetteloimiseen:

Tässä meidän on painettava Enter-näppäintä päästäksemme pois ohjevalikosta.

Kuinka määrittää SSH Linuxissa

Tässä osiossa käsittelemme palvelinpuolen määrityksiä SSH-palvelimen vahvistamiseksi. SSH-palvelin tallentaa kaikki kokoonpanonsa /etc/ssh/sshd_config-tiedostoon. On tärkeää huomata, että SSH-kokoonpanon päivittäminen edellyttää pääkäyttäjän oikeuksia.

Paras käytäntö on, että banneri tulee aina näyttää ennen SSH-yhteyden muodostamista. Joissakin tapauksissa se estää luvattomia käyttäjiä käyttämästä etäisäntiä. Katsotaanpa, kuinka tämä asetus otetaan käyttöön vaihe vaiheelta.

Luo ensin tekstitiedosto etäpalvelimelle, jossa on varoitusviesti:

# vi /etc/banner.txt 

Lisää seuraavaksi seuraava banneriviesti:

*********************************************************************
Warning !!! You are trying to log in to techmint.com's server.
All the activities on this server are monitored.
Terminate the session immediately if you are not an authorized user.
*********************************************************************

Avaa seuraavaksi /etc/ssh/sshd_config-tiedosto ja määritä tiedosto Banner-direktiivillä:

Banner /etc/banner.txt

Käynnistä nyt sshd-palvelu uudelleen ja lopeta istunto exit-komennolla:

# systemctl restart sshd
# exit

Lopuksi vahvista banneri kirjautumalla sisään etäisäntään:

$ ssh -l root 192.168.19.130

Tässä voimme, että palvelin näyttää SSH-bannerin oikein.

Toistaiseksi olemme käyttäneet pääkäyttäjää päästäksemme etäisäntään. Tämä on kuitenkin vähimmän etuoikeuden periaatteen vastaista. Tuotantoympäristössä pääkäyttäjän pääsyä rajoitetaan aina turvallisuuden parantamiseksi.

Voimme käyttää PermitRootLogin-direktiiviä root-käyttäjän kirjautumisen poistamiseen.

Avaa ensin /etc/ssh/sshd_config-tiedosto ja käytä vaihtoehtoa no PermitRootLogin-käskyn kanssa:

PermitRootLogin no

Käynnistä nyt sshd-palvelu uudelleen ja lopeta istunto exit-komennolla:

# systemctl restart sshd
# exit

Varmista lopuksi tämä luomalla uusi SSH-istunto:

$ ssh -l root 192.168.19.130

Tässä voimme havaita, että emme voi kirjautua sisään etäisäntään pääkäyttäjällä. Pääkäyttäjän kirjautumisen sallimiseksi voimme käyttää vaihtoehtoa yes samalla käskyllä.

Oletuksena SSH käyttää TCP-porttia 22. Voimme kuitenkin määrittää SSH:n toimimaan eri portilla, kuten 8088.

Avaa ensin /etc/ssh/sshd_config-tiedosto ja käytä arvoa 8088 porttidirektiivin kanssa:

Port 8088

Käynnistä seuraavaksi sshd-palvelu uudelleen ja lopeta istunto:

# systemctl restart sshd
# exit

Nyt kirjaudutaan sisään etäisäntään:

$ ssh -p 8088 -l root 192.168.19.130

Tässä esimerkissä olemme käyttäneet vaihtoehtoa -p portin numeron määrittämiseen.

Joissakin tapauksissa meidän on suoritettava muutamia muita vaiheita, jotta kommunikointi ei ole oletusportissa. Kuten käytettävissä olevien porttien tunnistaminen, palomuurisääntöjen päivittäminen, SELinux-asetukset jne.

Tässä artikkelissa keskustelimme SSH-protokollasta ja sen yleisistä käyttötapauksista. Seuraavaksi keskustelimme muutamista yleisistä vaihtoehdoista. Lopuksi keskustelimme joistakin SSH-palvelimen suojauksen asetuksista.

Tiedätkö muita parhaita SSH-komentojen käyttöä Linuxissa? Kerro meille mielipiteesi alla olevissa kommenteissa.