Protokol SSH: Kaj je to? Kako deluje?
SSH se pogosto uporablja za upravljanje omrežne infrastrukture, prenos datotek in izdajanje oddaljenih ukazov. V tem članku bomo pojasnili, kaj je protokol SSH, kako deluje in zakaj je pomemben.
Kaj je SSH?
SSH pomeni Secure Shell, kar pomeni, da zagotavlja lupino (vmesnik ukazne vrstice), ki je varna (šifrirana in overjena). SSH lahko opravlja tudi druge naloge, kot so pošiljanje datotek, izvajanje programov ali spreminjanje nastavitev v drugem računalniku.
Secure Shell je niz pravil, ki računalnikom določa, kako se med seboj varno pogovarjati. Sestavljen je iz treh glavnih delov: transportne plasti, plasti za preverjanje pristnosti uporabnika in plasti povezave. Transportni del zagotavlja, da si računalniki med seboj zaupajo in da nihče ne more vohuniti za njimi ali spreminjati njihovih sporočil. Uporabniški del zagotavlja, da lahko do drugega računalnika dostopa le prava oseba. Povezovalna plast poskrbi, da lahko računalnika hkrati počneta različne stvari, na primer vnašata ukaze, pošiljata datoteke ali odpirata programe.
Protokol SSH ščiti pred različnimi napadi, kot so prisluškovanje, prirejanje, prikrojevanje ali napadi tipa "človek sredi poti" (man-in-the-middle). Secure Shell uporabnikom omogoča tudi izvajanje različnih opravil na daljavo, ne da bi svoja gesla ali podatke izpostavili hekerjem ali zlonamernežem.
Prek šifriranega kanala prenaša vse vrste podatkov, če odjemalec in strežnik podpirata isti protokol. SSH lahko na primer prenese besedilne, binarne, zvočne, video ali slikovne datoteke z uporabo SCP ali SFTP. S posredovanjem vrat ali tuneliranjem lahko pošiljate tudi druge vrste podatkov, na primer grafiko, vrata TCP/IP ali vtičnice.
Ena od najbolj uporabnih funkcij SSH je možnost ustvarjanja tunelov ali posrednikov. Ta funkcija uporabnikom omogoča, da prek Secure Shell posredujejo ali preusmerijo omrežni promet z enih vrat ali naslova na druga vrata ali naslov. To je lahko koristno za izogibanje požarnim zidovom, dostop do omejenih virov, šifriranje nezaščitenih protokolov ali skrivanje omrežnih dejavnosti.
Kakšna je zgodovina protokola SSH?
Protokol za varno prijavo je leta 1995 ustvaril finski računalničar Tatu Ylönen. Želel je ustvariti boljši način povezovanja z drugimi računalniki od starih načinov, ki niso bili varni in jih je bilo mogoče zlahka vdreti. Prvo različico SSH (SSH-1) je izdal kot brezplačno programsko opremo z odprtokodno licenco. Pozneje je ustanovil podjetje za razvoj in trženje izdelkov SSH.
SSH se je najprej imenoval Secure Remote Login (SRL), vendar so ga spremenili v Secure Shell (SSH), ker je SRL že uporabljal drug program. Še eno zabavno dejstvo je, da je SSH navdihnil film o Jamesu Bondu GoldenEye, v katerem heker s podobnim orodjem vdre v satelitski nadzorni sistem.
Leta 1996 je skupina razvijalcev pod vodstvom Björna Grönvalla začela delati na brezplačni izvedbi SSH, imenovani OpenSSH, ki je temeljila na izvorni kodi prejšnje različice Secure Shell. OpenSSH je bil izdan leta 1999 kot del operacijskega sistema OpenBSD in je kmalu postal najbolj priljubljena izvedba SSH. OpenSSH je SSH dodal številne funkcije in izboljšave, kot so podpora za SSH-2 (revidirana različica protokola z izboljšano varnostjo in funkcionalnostjo), posredovanje X11, posredovanje agentov in podpora IPv6.
Leta 2006 je projektna skupina za internetno inženirstvo (IETF) objavila vrsto dokumentov RFC, ki so standardizirali protokol Secure Shell kot internetni standard. RFC-ji zajemajo osnovni protokol, protokol transportne plasti, protokol avtentikacije uporabnika, protokol povezave ter različne razširitve in algoritme.
Kako deluje SSH?
Šifrirana prijava na daljavo deluje tako, da sta na voljo dva računalnika: odjemalec in strežnik. Odjemalec je računalnik, ki ga uporabljate za povezavo s strežnikom. Strežnik je računalnik, v katerem želite opravljati naloge. Odjemalec in strežnik se med seboj pogovarjata s posebnim programom, imenovanim SSH.
Prvi korak je začetek povezave, tako da odjemalcu poveste, s katerim strežnikom se želite povezati. To lahko storite tako, da v terminal vtipkate nekaj takega:
ssh uporabniško ime@ip_naslov
To pomeni: s Secure Shell se povežite s strežnikom s tem naslovom IP (številka, ki identificira računalnik v internetu) z uporabo tega uporabniškega imena (ime, ki identificira uporabnika v računalniku).
Drugi korak je preverjanje, ali lahko strežniku zaupate z uporabo kriptografije javnega ključa. To je način uporabe matematike za izdelavo tajnih kod, ki jih lahko razumeta le dve osebi. Strežnik ima dve šifri: javni in zasebni ključ. Javni ključ je kot odprta ključavnica, ki jo lahko vidi vsakdo. Zasebni ključ je kot skrivni ključ, ki ga ima samo strežnik. Strežnik pošlje svoj javni ključ odjemalcu, ki preveri, ali se ujema z zaupanja vrednim ključem, shranjenim v vašem računalniku ali danim od osebe, ki ji zaupate. Če je ključ zaupanja vreden, lahko nadaljujete. Če ni, lahko ustavite ali sprejmete ključ, potem ko preverite njegov prstni odtis (kratko kodo, ki ga identificira).
Vtretjem koraku morate strežniku dokazati, kdo ste, z uporabo avtentikacije uporabnika. S tem dokažete, da vam je dovoljen dostop do strežnika. To lahko storite na različne načine, na primer z gesli, javnimi ključi ali certifikati. Najpogostejši so gesla in javni ključi. Preverjanje pristnosti z geslom je preprosto, vendar ni zelo varno. V odjemalcu vnesete geslo in ga prek skrivne povezave pošljete strežniku. Strežnik preveri, ali se geslo ujema z geslom, shranjenim za vaše uporabniško ime.
Preverjanje pristnosti z javnim ključem je varnejše, vendar zahteva več nastavitev. Vključuje uporabo drugega para kod: zasebnega in javnega ključa. Zasebni ključ je kot tajni ključ, ki ga hranite pri odjemalcu in ga nikoli ne delite z nikomer. Javni ključ je kot odprta ključavnica, ki jo pred vzpostavitvijo povezave delite s strežnikom. Te ključe lahko izdelate z orodjem, kot je ssh-keygen, in jih kopirate v strežnik z orodjem, kot je ssh-copy-id. Strežnik vaš javni ključ shrani v datoteko z imenom authorized_keys v vaši domači mapi (kjer imate shranjene datoteke v strežniku). Pri prijavi z avtentikacijo z javnim ključem odjemalec z vašim zasebnim ključem sestavi skrivno sporočilo in ga pošlje strežniku, ki ga preveri z vašim javnim ključem.
Po uspešni avtentikaciji uporabnika lahko odjemalec od strežnika zahteva eno ali več storitev z uporabo različnih kanalov znotraj šifriranega tunela. Najpogostejša storitev je dostop do lupine, ki uporabniku omogoča izvajanje ukazov na oddaljenem strežniku. Druga pogosta storitev je prenos datotek, ki uporabniku omogoča kopiranje datotek med lokalnim in oddaljenim sistemom z uporabo protokolov, kot sta SCP (Secure Copy Protocol) ali SFTP (SSH File Transfer Protocol). SCP je starejši protokol, ki za varen prenos datotek uporablja Secure Shell, vendar ima nekaj omejitev in pomanjkljivosti. SFTP je sodobnejši in prilagodljivejši protokol, ki prek SSH zagotavlja funkcije dostopa do datotek, prenosa datotek in upravljanja datotek.
Katere so pogoste uporabe protokola SSH?
Protokol Secure Socket Shell se pogosto uporablja za različne namene, kot so:
- zagotavljanje varnega dostopa uporabnikov in avtomatiziranih procesov do oddaljenih sistemov
- varen prenos datotek med lokalnimi in oddaljenimi sistemi
- izvajanje ukazov na daljavo v oddaljenih sistemih
- upravljanje omrežne infrastrukture in drugih kritičnih sistemskih komponent
- tuneliranje drugih protokolov ali aplikacij
- posredovanje omrežnega prometa
Zaključek
Secure Shell je zmogljivo in vsestransko orodje, ki omogoča varno oddaljeno prijavo, prenos datotek in izvajanje ukazov prek nezavarovanih omrežij. Uporablja kriptografijo javnih ključev in simetrično šifriranje za zagotavljanje avtentikacije strežnika, avtentikacije uporabnika, zaupnosti in celovitosti. SSH omogoča tudi izvajanje različnih stvari v drugem računalniku, na primer vnos ukazov, pošiljanje datotek ali odpiranje programov. Protokol varne prijave je zelo pomemben za vse uporabnike operacijskega sistema Linux / Windows ali skrbnike, ki želijo varno in učinkovito delati z oddaljenimi sistemi.