Visizplatītākā SSH komandu lietošana un konfigurācija operētājsistēmā Linux


Īsumā: šajā rokasgrāmatā mēs apspriedīsim biežākos SSH lietošanas gadījumus. Mēs arī apspriedīsim bieži lietotās SSH konfigurācijas, kuras var izmantot ikdienas dzīvē, lai palielinātu jūsu produktivitāti.

Secure Shell (SSH) ir plaši pieņemts tīkla protokols, kas ļauj mums drošā veidā mijiedarboties ar attāliem saimniekiem. Tas nodrošina drošību, šifrējot visu saziņu starp tām.

Kā lietot SSH komandu operētājsistēmā Linux

Šajā sadaļā mēs apspriedīsim dažus no populārākajiem SSH protokola lietošanas gadījumiem.

Ir dažādi veidi, kā mijiedarboties ar attāliem Linux saimniekiem, izmantojot tādus protokolus kā telnet, netcat utt. Tomēr tie nav droši, jo nav šifrēšanas. Mēs varam izmantot SSH protokolu, lai nodrošinātu drošu saziņu starp saimniekiem.

Lai mijiedarbotos ar attālo resursdatoru, mums ir jāizmanto SSH klients. Operētājsistēmai Linux ir pieejams daudz uz GUI un CLI balstītu klientu. Tomēr šajā rokasgrāmatā mēs izmantosim komandrindas utilītu ar nosaukumu ssh. Pēc noklusējuma ssh utilīta ir pieejama lielākajā daļā Linux izplatījumu.

SSH komandas sintakse ir šāda:

$ ssh [OPTIONS]  [COMMANDS] [ARGS]

Šeit kvadrātiekavas ([]) apzīmē neobligātos argumentus, savukārt leņķiekavas (<>) apzīmē obligātos argumentus.

Izveidosim savienojumu ar attālo resursdatoru, izmantojot ssh klientu:

$ ssh -l root 192.168.19.130

Šajā piemērā mēs norādījām pieteikšanās vārdu, izmantojot opciju -l, un galamērķis ir 192.168.19.130. SSH savienojums tiek izveidots pēc pareizās paroles ievadīšanas. Tagad mēs varam izpildīt komandas attālajā resursdatorā tāpat kā vietējā sistēmā.

# hostname

Lai pārtrauktu sesiju, mēs varam izmantot izejas komandu vai taustiņu kombināciju ctrl+D.

Ir svarīgi atzīmēt, ka katrai jaunai sesijai mums ir jāveic autentifikācija ar attālo saimniekdatoru. Lai izvairītos no paroļu ievadīšanas katru reizi, mēs varam iestatīt SSH bezparoles pieteikšanos.

Iepriekšējā sadaļā mēs redzējām, kā izveidot savienojumu ar attālo resursdatoru, kas ir piemērots tikai tad, ja mēs gatavojamies izmantot attālo resursdatoru ilgāku laiku. Dažreiz mums vienkārši ir jāizpilda viena vai divas komandas attālajā resursdatorā. Šādos gadījumos mēs varam izpildīt šīs komandas, neveidojot ilgtermiņa sesiju.

Izpildīsim komandu saimniekdatora nosaukums attālajā resursdatorā:

$ ssh -l root 192.168.19.130 hostname

Līdzīgā veidā mēs varam izpildīt vairākas komandas attālā Linux mašīnā:

$ ssh -l root 192.168.19.130 'hostname; pwd'

Ir svarīgi ņemt vērā, ka komandas ir jāiekļauj pēdiņās un jāatdala ar semikolu (;). Ja vēlaties palaist komandas vairākos attālos Linux resursdatoros, izlasiet mūsu rakstu - Pssh - Palaist komandas vairākos attālos Linux resursdatoros.

Līdzīgi kā komandām, mēs varam arī izpildīt vietējo skriptu attālajā resursdatorā. Sapratīsim to ar piemēru.

Vispirms vietējā datorā izveidojiet vienkāršu čaulas skriptu ar izpildāmām atļaujām:

$ cat script.sh 

hostname
pwd

Tagad izpildīsim to attālajā resursdatorā:

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

Šajā piemērā mēs izmantojām bash opciju -s, lai nolasītu skriptu no standarta ievades.

Mēs ļoti bieži strādājam ar failiem un direktorijiem. Viena no izplatītākajām darbībām, ko lietotāji veic, ir direktoriju un failu kopēšana. Tāpat kā vietējās mašīnas, mēs varam kopēt failus un direktorijus starp attālajiem saimniekiem, izmantojot komandu scp, kas droši kopē failus, izmantojot SSH protokolu.

Kopēsim failu script.sh uz attālās saimniekdatora direktoriju /tmp:

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

Tagad pārbaudiet, vai fails ir nokopēts:

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

Līdzīgā veidā mēs varam izmantot komandu scp, lai kopētu direktorijus. Tomēr mums ir jāizmanto opcija -r ar komandu.

SSH atbalsta datu saspiešanu, izmantojot gzip saspiešanas algoritmu, kas saspiež visas iespējamās datu plūsmas, piemēram, stdin, stdout, stderr un tā tālāk. Šī opcija ir ļoti noderīga, izmantojot lēnus tīkla savienojumus.

Mēs varam iespējot saspiešanu SSH, izmantojot opciju -C:

$ ssh -C -l root 192.168.19.130 'hostname' 

Linux lietotājiem bieži ir jāatkļūdo SSH sesijas, lai izpētītu dažādas ar SSH savienojumu un konfigurāciju saistītas problēmas. Šādos gadījumos mēs varam iespējot detalizēto režīmu, kas drukā pašreizējās sesijas atkļūdošanas žurnālus.

Iespējosim detalizēto režīmu, izmantojot opciju -v:

$ ssh -v -l root 192.168.19.130 hostname

Papildus tam mēs varam palielināt detalizētības līmeni, izmantojot vairākas opcijas -v.

  • -v — iestata detalizētības līmeni uz 1 un sniedz informāciju par klienta puses darbībām.
  • -vv — iestata detalizētības līmeni uz 2 un sniedz detalizētu informāciju par klienta un servera puses darbībām.
  • -vvv — iestata detalizētības līmeni uz 3 un sniedz detalizētāku informāciju par klienta un servera puses darbībām.

Maksimālais detalizētības līmenis, ko atbalsta SSH, ir 3. Apskatīsim to darbībā:

$ ssh -vvv -l root 192.168.19.130 hostname

Iepriekš minētajā piemērā debug1 apzīmē atkļūdošanas ziņojumu, kas iespējots ar 1. detalizētības līmeni. Līdzīgi, debug2 un debug3 apzīmē atkļūdošanas ziņojumus, kas iespējoti attiecīgi 2. un 3. daudzpusības līmenī.

Mēs varam izmantot atkāpšanās secības ar SSH, lai pārvaldītu klienta termināļa sesijas. Apspriedīsim bieži izmantotās atkāpšanās secības ar atbilstošiem lietošanas gadījumiem.

Dažreiz mums ir jāveic dažas darbības vietējā mašīnā, nepārtraucot pašreizējo SSH sesiju. Šādā gadījumā mēs varam apturēt pašreizējo sesiju, izmantojot taustiņu secību ~ + ctrl+z.

Vispirms piesakieties attālajā resursdatorā un izpildiet komandu hostname:

$ ssh -l root 192.168.19.130
# hostname

Pēc tam, lai apturētu pašreizējo sesiju, vispirms ierakstiet rakstzīmi tilde (~) un pēc tam nospiediet taustiņus ctrl+z. Ir svarīgi ņemt vērā, ka tildes rakstzīme (~) netiks parādīta standarta failā, kamēr netiks nospiests ctrl+z.

Tagad pārbaudīsim, vai sesija ir apturēta:

$ jobs

Šeit mēs redzam, ka pašreizējā SSH sesija darbojas fonā.

Atsāksim sesiju vēlreiz, izmantojot komandu fg, un izpildīsim komandu hostname:

$ fg %1

Esmu pārliecināts, ka esat redzējis iesaldētās SSH sesijas, kas notiek, ja sesiju pārtrauc nestabils tīkls. Šeit mēs nevaram pārtraukt sesiju, izmantojot komandu iziet. Tomēr mēs varam to pārtraukt, izmantojot taustiņu secību \~ + .\.

Vispirms piesakieties attālajā resursdatorā:

$ ssh -l root 192.168.19.130

Tagad izmantojiet taustiņu kombināciju \~ + .\, lai pārtrauktu pašreizējo sesiju.

Šajā piemērā redzams, ka SSH parāda ziņojumu – Savienojums ar 192.168.19.130 aizvērts.

Viena interesanta lieta ir tā, ka ir atkāpšanās secība, lai uzskaitītu visas atbalstītās atkāpšanās secības. Mēs varam izmantot atsoļa secību \~ + ?, lai uzskaitītu atbalstītās atsoļa secības:

Šeit mums ir jānospiež taustiņš Enter, lai izietu no palīdzības izvēlnes.

Kā konfigurēt SSH operētājsistēmā Linux

Šajā sadaļā mēs apspriedīsim servera puses konfigurāciju, lai nostiprinātu SSH serveri. SSH serveris visu savu konfigurāciju saglabā /etc/ssh/sshd_config failā. Ir svarīgi atzīmēt, ka, lai atjauninātu SSH konfigurāciju, ir nepieciešama root lietotāja piekļuve.

Labākā prakse ir tāda, ka pirms SSH savienojuma izveides mums vienmēr jāparāda reklāmkarogs. Dažos gadījumos tas attur nesankcionētus lietotājus no piekļuves attālajiem saimniekiem. Apskatīsim, kā soli pa solim iespējot šo iestatījumu.

Vispirms attālajā serverī izveidojiet teksta failu ar brīdinājuma ziņojumu:

# vi /etc/banner.txt 

Pēc tam pievienojiet šādu reklāmkaroga ziņojumu:

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

Pēc tam atveriet /etc/ssh/sshd_config failu un norādiet failu ar Banner direktīvu:

Banner /etc/banner.txt

Tagad restartējiet sshd pakalpojumu un pārtrauciet sesiju, izmantojot izejas komandu:

# systemctl restart sshd
# exit

Visbeidzot, pārbaudiet reklāmkarogu, piesakoties attālajā resursdatorā:

$ ssh -l root 192.168.19.130

Šeit mēs varam nodrošināt, ka serveris pareizi parāda SSH reklāmkarogu.

Līdz šim mēs izmantojām root lietotāju, lai piekļūtu attālajam saimniekdatoram. Tomēr tas ir pretrunā mazāko privilēģiju principam. Ražošanas vidē root lietotāja piekļuve vienmēr ir ierobežota, lai uzlabotu drošību.

Mēs varam izmantot PermitRootLogin direktīvu, lai atspējotu root lietotāja pieteikšanos.

Vispirms atveriet /etc/ssh/sshd_config failu un izmantojiet opciju ar PermitRootLogin direktīvu:

PermitRootLogin no

Tagad restartējiet sshd pakalpojumu un pārtrauciet sesiju, izmantojot izejas komandu:

# systemctl restart sshd
# exit

Visbeidzot pārbaudiet to, izveidojot jaunu SSH sesiju:

$ ssh -l root 192.168.19.130

Šeit mēs varam novērot, ka mēs nevaram pieteikties attālajā resursdatorā ar root lietotāju. Lai atļautu root lietotāja pieteikšanos, mēs varam izmantot opciju ar to pašu direktīvu.

Pēc noklusējuma SSH izmanto TCP portu 22. Tomēr mēs varam konfigurēt SSH, lai tas darbotos citā portā, t.i., 8088.

Vispirms atveriet /etc/ssh/sshd_config failu un izmantojiet 8088 vērtību ar porta direktīvu:

Port 8088

Pēc tam restartējiet sshd pakalpojumu un pārtrauciet sesiju:

# systemctl restart sshd
# exit

Tagad piesakieties attālajā resursdatorā:

$ ssh -p 8088 -l root 192.168.19.130

Šajā piemērā mēs esam izmantojuši opciju -p, lai norādītu porta numuru.

Dažos gadījumos mums ir jāveic dažas citas darbības, lai atļautu saziņu portā, kas nav noklusējuma ports. Piemēram, pieejamo portu identificēšana, ugunsmūra noteikumu atjaunināšana, SELinux iestatījumi utt.

Šajā rakstā mēs apspriedām SSH protokolu un tā izplatītos lietošanas gadījumus. Tālāk mēs apspriedām dažas izplatītas iespējas. Visbeidzot, mēs apspriedām dažus iestatījumus, lai nodrošinātu SSH serveri.

Vai zināt kādu citu labāko SSH komandu lietojumu operētājsistēmā Linux? Paziņojiet mums savu viedokli tālāk sniegtajos komentāros.