Skip to content

Secure Shell – SSH

Do gruče Vega (prijavnega vozlišča) lahko dostopate tudi prek povezave SSH. Varnostna lupina SSH (angl. secure shell) je storitev, ki s šifriranjem zavaruje komunikacijo med uporabnikom in strežnikom. Uporaba SSH je možna na več načinov. Eden od teh je, da uporabljate samodejno generirane javno-zasebne pare ključev za enostavno šifriranje omrežne povezave, nato pa se prijavite na strežnik z avtentikacijo in geslom svojega računa. Ko se odjemalec poveže s strežnikom SSH, strežnik pošlje kopijo njegovega javnega ključa odjemalcu, preden se ta prijavi. Tako se lahko vzpostavi varno šifriranje za komunikacijski kanal in avtentifikacijo strežnika za odjemalca.

Prijava v ciljni sistem z ukazom: $ ssh <username>@<server>

Kljub temu pa se lahko strežnik SSH konfigurira tudi tako, da dovoli avtentikacijo brez gesla, na osnovi ključa. To temelji na shemi javnega in zasebnega ključa. V tem primeru je treba ustvariti ustrezni par datotek kriptografskih ključev. Ena datoteka je zasebni ključ, druga pa javni ključ. Zasebni ključ se uporablja kot avtentikacijska poverilnica ter mora biti skrit in zaščiten, podobno kot geslo. Javni ključ se kopira v sistem, s katerim se lahko uporabnik poveže, in se uporablja za verifikacijo zasebnega ključa. Javnega ključa zato ni treba skriti.

Uporabnik mora vstaviti ali kopirati svoj javni ključ na svoj račun na strežniku. Ko se uporabnik poskusi prijaviti, lahko strežnik SSH izda poziv za javni ključ, na katerega se lahko pravilno odgovori samo z zasebnim ključem. Posledično lahko uporabniški odjemalec SSH samodejno potrdi prijavo na strežnik z uporabniškim edinstvenim zasebnim ključem. S tem lahko odjemalec varno dostopa do sistemov tako, da ni potrebe po vsakokratnem ponovnem vnosu interaktivnega gesla. Če želijo Linux uporabniki ustvariti zasebni ključ in ustrezni javni ključ za avtentikacijo, je treba izdati naslednji ukaz za:

 $ ssh-keygen

Zasebni in javni ključ sta privzeto shranjena v naslednjih datotekah:

~/.ssh/id_rsa
~/.ssh/id_rsa.pub

Pri ustvarjanju ključev SSH se lahko določi drug direktorij, kamor se shranjujejo ključi. To se lahko izvede tako, da ukazu ssh-keygen dodate možnost -f in dodelite datoteko, kamor naj se shrani ključ.

$ ssh-keygen -f <private key>

Zasebni ključ je celotna pot in ime datoteke, ki vsebuje zasebni ključ, povezan z gručo in do katerega želi dostopati uporabnik. Obstaja tudi novejša verzija ključev (ed25519), ki temelji na novi kriptografski rešitvi in je hitrejša ter bolj varna. Razlika v upravljanju takšnih ključev v primerjavi z običajnimi je samo v ustvarjanju takšnega ključa, pri katerem je treba ukazu ssh-keygen dodati možnost -t in dodeliti ed25519.

$ ssh-keygen -t ed25519
$ ssh-keygen -t ed25519 -f <private key>

Ustvarjen ključ ima tudi drugačno ime od običajnih ključev.

~/.ssh /id_ed25519
~/.ssh/id_ed25519.pub

Pri izvajanju ukaza ssh-keygen je uporabnik pozvan, da nastavi geslo za svoj zasebni ključ SSH. Če uporabnik ne določi gesla, generirani zasebni ključ ni zaščiten. V tem primeru se lahko kdor koli, ki ima datoteko z uporabnikovim zasebnim ključem, z njim avtenticira kot uporabnik. Vendar če pa uporabnik nastavi geslo, ga mora vnesti vsakokrat, ko želi uporabiti zasebni ključ za avtentikacijo. V tem primeru bi se za avtentikacijo uporabilo geslo zasebnega ključa in uporabniško geslo na oddaljenem gostitelju. Kljub temu pa se lahko zažene pripomoček, imenovan ssh-agent, ki ob začetku seje začasno shrani geslo zasebnega ključa v pomnilnik, kar omogoči avtentikacijo brez vnosa gesla med trenutno sejo, saj ssh-agent vsakokrat, ko se uporabnik prijavi v sistem z uporabo zasebnega ključa, samodejno ponudi geslo.

Pripomoček ssh-agent se zažene z naslednjim ukazom:

$ eval $ (ssh-agent)

Ko se ssh-agent zažene, mu je treba sporočiti geslo za zasebni ključ. To se lahko izvede z ukazom ssh-add. Če zasebni ključ uporabnika ni v privzeti datoteki /home/user/.ssh/id_rsa, je treba lokacijo ključa dodeliti ukazu ssh-add.

$ ssh-add <private key>

Preden se lahko uporabi avtentikacija na osnovi ključa, je treba javni ključ kopirati v ciljni sistem (strežnik). To se izvede z ukazom ssh-copy-id. Ukaz privzeto uporabi datoteko /home/user/.ssh/id_rsa.pub. Če je ključ v drugi datoteki, je treba dodati možnost -f in določiti pot do datoteke z javnim ključem.

$ ssh-copy-id -f <private key> <username>@login.vega.izum.si

Prva prijava

Ko je ključ kopiran, se lahko uporabnik s ključem prijavi v ciljni sistem na enak način, kot bi se prijavil brez ključa. Če pa ima uporabnik ključ shranjen v drugi datoteki kot pa v privzeti /home/user/.ssh/id_rsa, mora ukazu ssh dodeliti možnost -i in določiti pot do datoteke z zasebnim ključem.

$ ssh <username>@login.vega.izum.si
$ ssh -i <key file> <username>@login.vega.izum.si

Ko prvič vzpostavite povezavo SSH z določenim gostiteljem, vas lupina vpraša, če želite, da si sistem zapomni tega gostitelja. Če odgovorite z y (da), se prstni odtis tega gostitelja zapiše v novo ustvarjeno datoteko know_hosts v direktorij ~/ .ssh. Vsi drugi gostitelji, s katerimi se boste morda povezali v prihodnosti, se nato vnesejo v to isto datoteko.