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 hyväksytty verkkoprotokolla, jonka avulla voimme olla vuorovaikutuksessa etäisäntien kanssa turvallisesti. Se tarjoaa suojan salaamalla kaiken niiden välisen viestinnän.

Kuinka käyttää SSH-komentoa Linuxissa

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

Yhdistä Remote Linux Hostiin

On olemassa useita tapoja olla vuorovaikutuksessa Linux-etäisäntien kanssa käyttämällä protokollia, kuten telnet, ftp, 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 tässä oppaassa kuitenkin komentorivityökalua 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 käyttämällä ssh-asiakasta:

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.

Suorita komennot etäisännässä

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ä.

Suorita komentosarja etäisännässä

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  'bash -s' < ./script.sh 

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

Kopioi tiedostoja isäntien välillä

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 :/tmp

Tarkista nyt, että tiedosto on kopioitu:

ssh [email  'ls /tmp/script.sh'

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

Ota SSH:n pakkaus käyttöön

SSH tukee tietojen pakkausta käyttämällä gzip-pakkausalgoritmia, 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' 

Ota monisanainen tila käyttöön SSH:lle

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 virheenkorjausviestiä. Vastaavasti debug2 ja debug3 edustavat virheenkorjausviestejä, jotka sanallisuustasot 2 ja 3.

Escape-sekvenssit SSH:ssa

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

SSH-istunnon keskeyttäminen

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 hostname-komento:

fg %1

Lopeta Frozen SSH -istunto

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.

Luettelo tuetut pakosarjat

Mielenkiintoinen asia on, että kaikki tuetut erotussekvenssit luetellaan on olemassa. Voimme käyttää "~ + ? ” estosekvenssi listataksesi tuetut poistosekvenssit:

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 tiedostoon /etc/ssh/sshd_config. On tärkeää huomata, että SSH-kokoonpanon päivittäminen edellyttää pääkäyttäjän oikeuksia.

Näytä SSH-banneri

Paras käytäntö on, että meidän tulisi aina näyttää banneri 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 tiedosto /etc/ssh/sshd_config ja määritä tiedosto Banneri-ohjeella:

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.

Poista SSH Root Login käytöstä

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-komennolla:

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ä.

Muuta oletus-SSH-porttia

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ä 8088-arvoa Port-direktiivin 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 muutama muu vaihe, 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.