Linux-da iň köp ýaýran SSH buýruk ulanylyşy we konfigurasiýasy


Gysgaça: Bu gollanmada SSH-iň umumy ulanylyş ýagdaýlaryny ara alyp maslahatlaşarys. Şeýle hem, öndürijiligiňizi ýokarlandyrmak üçin gündelik durmuşda ulanyp boljak SSH konfigurasiýalaryny ara alyp maslahatlaşarys.

“Secure Shell” (SSH), uzakdaky hostlar bilen ygtybarly aragatnaşyk saklamaga mümkinçilik berýän giňden kabul edilen tor protokolydyr. Aralaryndaky ähli aragatnaşygy şifrlemek arkaly howpsuzlygy üpjün edýär.

Linux-da SSH buýrugyny nädip ulanmaly

Bu bölümde SSH protokolynyň meşhur ulanylyş ýagdaýlaryny ara alyp maslahatlaşarys.

Telnet, netcat we ş.m. ýaly protokollary ulanyp, uzakdaky Linux öý eýeleri bilen aragatnaşyk saklamagyň dürli ýollary bar, ýöne şifrlemäniň ýoklugy sebäpli bu howpsuz däl. Öý eýeleriniň arasynda howpsuz aragatnaşyk saklamak üçin SSH protokolyny ulanyp bileris.

Uzakdaky öý eýesi bilen aragatnaşyk saklamak üçin SSH müşderisini ulanmalydyrys. Linux üçin GUI we CLI esasly müşderiler köp. Şeýle-de bolsa, bu gollanmanyň dowamynda ssh atly buýruk setirini ulanarys. Düzgüne görä, ssh programmasy Linux paýlaýjylarynyň köpüsinde elýeterlidir.

SSH buýrugynyň sintaksisi aşakdaky ýaly:

$ ssh [OPTIONS]  [COMMANDS] [ARGS]

Bu ýerde kwadrat ýaýlar ([]) goşmaça argumentleri görkezýär, burçly ýaýlar (<>) hökmany argumentleri görkezýär.

Ssh müşderisini ulanyp, uzakdaky hosta birikeliň:

$ ssh -l root 192.168.19.130

Bu mysalda, -l opsiýasyny ulanyp, giriş adyny kesgitledik we barmaly ýeri 192.168.19.130. SSH birikmesi dogry paroly girizensoň döredilýär. Indi bolsa, ýerli ulgam ýaly uzakdaky hostdaky buýruklary ýerine ýetirip bileris.

# hostname

Sessiýany bes etmek üçin çykyş buýrugyny ýa-da ctrl+D düwme kombinasiýasyny ulanyp bileris.

Her täze sessiýa üçin uzakdaky host bilen tassyklamalydygymyzy bellemelidiris. Her gezek parol girizmezlik üçin, SSH parolsyz giriş gurup bileris.

Öňki bölümde, uzakdaky hosty has uzak wagtlap ulanjak bolanymyzda, uzakdaky host bilen nädip baglanyşyk gurmalydygyny gördük. Käwagt, uzakdaky hostda diňe bir ýa-da iki buýrugy ýerine ýetirmeli bolýarys. Şeýle ýagdaýlarda uzak möhletli sessiýa döretmezden şol buýruklary ýerine ýetirip bileris.

Geliň, uzakdaky hostda host ady buýrugyny ýerine ýetireliň:

$ ssh -l root 192.168.19.130 hostname

Edil şonuň ýaly, uzakdaky Linux enjamynda birnäçe buýrugy ýerine ýetirip bileris:

$ ssh -l root 192.168.19.130 'hostname; pwd'

Buýruklaryň sitatalaryň içinde bolmaly we ýarym sütün (;) nyşan bilen bölünmelidigini bellemelidiris. Birnäçe uzakdaky Linux hostlarynda buýruklary işletmek isleseňiz, makalamyzy okaň - Pssh - Birnäçe uzakdaky Linux Hostlarynda buýruklary işlediň.

Buýruklara meňzeş ýaly, uzakdaky hostda ýerli skript hem ýerine ýetirip bileris. Geliň, muňa mysal bilen düşüneliň.

Ilki bilen, ýerine ýetirip bolýan rugsatlary bolan ýerli enjamda ýönekeý gabyk skriptini dörediň:

$ cat script.sh 

hostname
pwd

Indi ony uzakdaky hostda ýerine ýetireliň:

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

Bu mysalda, adaty girişden skript okamak üçin başyň -s opsiýasyny ulandyk.

Faýllar we kataloglar bilen ýygy-ýygydan işleýäris. Ulanyjylaryň ýerine ýetirýän umumy amallarynyň biri kataloglary we faýllary göçürmekdir. Machineserli maşynlar ýaly, SSH protokolyny ulanyp faýllary ygtybarly göçürýän scp buýrugyny ulanyp, uzakdaky hostlaryň arasynda faýllary we kataloglary göçürip bileris.

Script.sh faýlyny uzakdaky hostyň/tmp katalogyna göçüreliň:

$ scp script.sh [email :/tmp

Indi, faýlyň göçürilendigini barlaň:

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

Edil şonuň ýaly, kataloglary göçürmek üçin scp buýrugyny ulanyp bileris. Şeýle-de bolsa, buýruk bilen -r opsiýasyny ulanmaly bolýarys.

SSH, stdin, stdout, stderr we ş.m. ýaly ähli mümkin bolan maglumat akymlaryny gysýan gzip gysyş algoritmini ulanyp, maglumat gysyşyny goldaýar. Bu opsiýa haýal tor birikmelerini ulananyňyzda gaty amatly bolýar.

SSH-de gysyşy -C opsiýasyny ulanyp açyp bileris:

$ ssh -C -l root 192.168.19.130 'hostname' 

Linux ulanyjylary köplenç dürli SSH birikmesini we konfigurasiýa bilen baglanyşykly meseleleri derňemek üçin SSH sessiýalaryny düzetmeli bolýarlar. Şeýle ýagdaýlarda, häzirki sessiýanyň düzediş surnallaryny çap edýän sözleýiş re modeimini açyp bileris.

Geliň, -v opsiýasyny ulanyp, söz düzümini işledeliň:

$ ssh -v -l root 192.168.19.130 hostname

Bulardan başga-da, köp -v opsiýalaryny ulanyp, söz derejesini ýokarlandyryp bileris.

  • -v - sözleýiş derejesini 1-e düzýär we müşderi tarapyndaky işler barada jikme-jiklikler berýär.
  • -vv - sözleýiş derejesini 2-e düzýär we müşderi we serwer tarapyndaky işler barada jikme-jiklikler berýär.
  • -vvv - söz derejesini 3-e düzýär we müşderi we serwer tarapyndaky işler barada has jikme-jik maglumat berýär.

SSH tarapyndan goldanýan iň ýokary söz derejesi 3. Geliň muny herekete göreliň:

$ ssh -vvv -l root 192.168.19.130 hostname

Aboveokardaky mysalda, debug1 sözleýiş derejesi bilen işjeňleşdirilen düzediş habaryny görkezýär. Şonuň ýaly-da, debug2 we debug3 degişlilikde 2 we 3 söz derejesi bilen işjeňleşdirilen düzediş habarlaryny görkezýär.

Müşderi terminal sessiýalaryny dolandyrmak üçin SSH bilen gaçmak yzygiderliligini ulanyp bileris. Geliň, köplenç ulanylýan gaçmak yzygiderliligini degişli ulanylyş ýagdaýlary bilen ara alyp maslahatlaşalyň.

Käwagt, häzirki SSH sessiýasyny ýatyrmazdan, ýerli enjamda birnäçe işi ýerine ýetirmeli bolýarys. Şeýle ssenariýada, ~ + ctrl+z düwme yzygiderliligini ulanyp, häzirki sessiýany togtadyp bileris.

Ilki bilen, uzakdaky hosta giriň we host ady buýrugyny ýerine ýetiriň:

$ ssh -l root 192.168.19.130
# hostname

Ondan soň, häzirki sessiýany togtatmak üçin ilki bilen tilde (~) belgisini ýazyň we soňra ctrl+z düwmelerini basyň. Tilde (~) nyşanynyň ctrl+z basýançak stdoutda görkezilmejekdigini bellemelidiris.

Indi, sessiýanyň togtadylandygyny barlalyň:

$ jobs

Bu ýerde, häzirki SSH sessiýasynyň fonda işleýändigini görüp bileris.

Geliň, fg buýrugyny ulanyp, sessiýany täzeden dowam etdireliň we host ady buýrugyny ýerine ýetireliň:

$ fg %1

Sessiýa durnuksyz ulgam tarapyndan kesilende bolup geçýän doňan SSH sessiýalaryny gören bolmalydygyna ynanýaryn. Bu ýerde, çykyş buýrugyny ulanyp, sessiýany ýatyryp bilmeris. Şeýle-de bolsa, \~ +.\ düwme yzygiderliligini ulanyp, ony ýatyryp bileris.

Ilki bilen uzakdaky hosta giriň:

$ ssh -l root 192.168.19.130

Häzirki sessiýany bes etmek üçin \~ +.\ düwmesini birleşdiriň.

Bu mysalda, SSH-iň habary görkezýändigini görüp bileris - 192.168.19.130 birikmesi ýapyldy.

Bir gyzykly zat, ähli goldanýan gaçmak yzygiderliligini sanamak üçin gaçmagyň yzygiderliligi bar. Goldanýan gaçmak yzygiderliligini sanamak üçin \~ +? gaçmak yzygiderliligini ulanyp bileris:

Bu ýerde kömek menýusyndan çykmak üçin enter düwmesini basmalydyrys.

Linux-da SSH-ni nädip sazlamaly

Bu bölümde SSH serwerini gatylaşdyrmak üçin serwer tarapynyň konfigurasiýasyny ara alyp maslahatlaşarys. SSH serweri ähli konfigurasiýasyny/etc/ssh/sshd_config faýlynda saklaýar. SSH konfigurasiýasyny täzelemek üçin kök ulanyjynyň girişiniň zerurdygyny bellemelidiris.

Iň oňat tejribe hökmünde SSH birikmesini gurmazdan ozal elmydama banner görkezmeli. Käbir ýagdaýlarda, rugsatsyz ulanyjylaryň uzakdaky hostlara girmegini gadagan edýär. Bu sazlamany ädimme-ädim nädip işletmelidigini göreliň.

Ilki bilen, duýduryş habary bolan uzakdaky serwerde tekst faýly dörediň:

# vi /etc/banner.txt 

Ondan soň, aşakdaky banner habaryny goşuň:

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

Ondan soň/etc/ssh/sshd_config faýly açyň we Banner direktiwasy bilen faýly görkeziň:

Banner /etc/banner.txt

Indi sshd hyzmatyny täzeden açyň we çykyş buýrugyny ulanyp sessiýany bes ediň:

# systemctl restart sshd
# exit

Ahyrynda, uzakdaky hosta girip, banneri barlaň:

$ ssh -l root 192.168.19.130

Bu ýerde, serweriň SSH bannerini dogry görkezip biljekdigini edip bileris.

Şu wagta çenli uzakdaky hosta girmek üçin kök ulanyjyny ulandyk. Şeýle-de bolsa, bu iň az artykmaçlyk ýörelgesine ters gelýär. Önümçilik gurşawynda howpsuzlygy ýokarlandyrmak üçin kök ulanyjynyň elýeterliligi elmydama çäklendirilýär.

Kök ulanyjy girişini öçürmek üçin PermitRootLogin direktiwasyny ulanyp bileris.

Ilki bilen/etc/ssh/sshd_config faýlyny açyň we PermitRootLogin direktiwasy bilen ýok opsiýasyny ulanyň:

PermitRootLogin no

Indi sshd hyzmatyny täzeden açyň we çykyş buýrugyny ulanyp sessiýany bes ediň:

# systemctl restart sshd
# exit

Ahyrynda, täze SSH sessiýasyny döretmek arkaly muny barlaň:

$ ssh -l root 192.168.19.130

Bu ýerde, kök ulanyjy bilen uzakdaky hosta girip bilmeýändigimizi synlap bileris. Kök ulanyjynyň girişine rugsat bermek üçin şol bir görkezme bilen hawa opsiýasyny ulanyp bileris.

Düzgüne görä, SSH TCP port 22 ulanýar. Şeýle-de bolsa, SSH-ni başga bir portda, ýagny 8088-de işlemek üçin sazlap bileris.

Ilki bilen/etc/ssh/sshd_config faýly açyň we Port direktiwasy bilen 8088 bahasyny ulanyň:

Port 8088

Ondan soň sshd hyzmatyny täzeden açyň we sessiýany bes ediň:

# systemctl restart sshd
# exit

Indi uzakdaky hosta gireliň:

$ ssh -p 8088 -l root 192.168.19.130

Bu mysalda port belgisini kesgitlemek üçin -p opsiýasyny ulandyk.

Käbir ýagdaýlarda, deslapky däl portda aragatnaşyk saklamak üçin başga-da birnäçe ädim etmeli bolýarys. Bar bolan portlary kesgitlemek, diwar gorag düzgünlerini täzelemek, SELinux sazlamalary we ş.m.

Bu makalada SSH protokolyny we umumy ulanylyş ýagdaýlaryny ara alyp maslahatlaşdyk. Soň bolsa, birnäçe umumy warianty ara alyp maslahatlaşdyk. Ahyrynda, SSH serwerini goramak üçin käbir sazlamalary ara alyp maslahatlaşdyk.

Linux-da başga iň oňat SSH buýruk ulanylyşyny bilýärsiňizmi? Aşakdaky teswirlerde pikirleriňizi bize habar beriň.