Modul 2 · 2.1
Izdelava in uporaba ključev SSH
Modul 2: SSH in ključi · Čas branja: 10 minut
Učni cilj: Po tej lekciji boste znali izdelati par ključev, namestiti javni ključ na strežnik, se prijaviti brez gesla in zasebni ključ shraniti tako, da izgubljen prenosnik ne bo katastrofa.
Ključni pojmi: par ključev, javni ključ, zasebni ključ, ed25519, RSA, geslo za ključ (passphrase), ssh-agent, ssh-copy-id, authorized_keys, pravice 700 in 600, ključ za vsako napravo, ključ FIDO2
Zakaj so ključi boljši od gesel
V lekciji 1.3 ste se prijavili z geslom. To deluje, vendar strežnik na internetu že od prve minute obiskujejo programi, ki ugibajo gesla. Poglejte dnevnik novega strežnika:
root@web1:~# journalctl -u ssh --since "1 hour ago" | grep -c "Failed password"
214Na stotine poskusov na uro je običajno. Močno geslo jih ustavi, vendar ste ustvarili šibko točko, ki je ne potrebujete. S ključem SSH je ugibanje nesmiselno: ni ničesar, kar bi bilo mogoče najti na seznamu besed.
Ključ je sestavljen iz dveh delov, ki spadata skupaj, to je par ključev:
- Zasebni ključ ostane na Vašem računalniku. Kdor ima to datoteko (in pozna geslo za ključ), se lahko prijavi. Ne delite ga z nikomer, tudi ne s ponudnikom ali s službo za pomoč.
- Javni ključ date strežniku. Lahko ga vidi kdorkoli: z njim se ni mogoče prijaviti, z njim se lahko le preverja.
Pri prijavi strežnik po povezavi ne pošlje nobenega gesla. Vaš računalnik s podpisom dokaže, da ima zasebni ključ, strežnik pa ta podpis preveri z javnim ključem. Tudi če nekdo prisluškuje v omrežju, ne vidi ničesar, kar bi lahko pozneje ponovno uporabil.
Izdelava ključa
Ključ izdelate na svojem računalniku, ne na strežniku. V sistemih Windows 10 in 11, macOS in Linux je ssh-keygen že vgrajen. Odprite PowerShell ali Terminal:
anna@laptop:~$ ssh-keygen -t ed25519 -C "anna@laptop 2026"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/anna/.ssh/id_ed25519):
Enter passphrase for "/home/anna/.ssh/id_ed25519" (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/anna/.ssh/id_ed25519
Your public key has been saved in /home/anna/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:q3J8vX0bT2kPz9mWc1nR4sLh7uYdE5aF6gBiC0oN2xQ anna@laptop 2026Kaj se tukaj zgodi?
-t ed25519izbere vrsto. Ed25519 je kratek, hiter in varen, od različice OpenSSH 9.5 pa je tudi privzeta vrsta, če ničesar ne navedete. Če morate podpirati star sistem, ki ed25519 ne pozna, uporabite RSA z vsaj 3072 biti:ssh-keygen -t rsa -b 4096. Starejše vrste, kot je DSA, so bile iz OpenSSH odstranjene; ne uporabljajte jih.-Cje le opomba. Vanjo zapišite nekaj, po čemer boste pozneje prepoznali, s katere naprave je ključ. To zelo pomaga, ko morate ključ preklicati.- Geslo za ključ (passphrase) šifrira zasebni ključ na Vašem disku. Če Vam ukradejo prenosnik, ima tat šifrirano datoteko. Brez gesla za ključ ima takoj dostop do vseh Vaših strežnikov.
Zdaj imate dve datoteki:
| Datoteka | Kaj | Deliti? |
|---|---|---|
~/.ssh/id_ed25519 | Zasebni ključ | Nikoli |
~/.ssh/id_ed25519.pub | Javni ključ, ena vrstica besedila | Da, na strežnik |
V sistemu Windows sta v C:\Users\anna\.ssh\. Javni ključ je ena vrstica, ki se začne z ssh-ed25519:
anna@laptop:~$ cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHk2... anna@laptop 2026Namestitev javnega ključa na strežnik
Strežnik išče javne ključe v datoteki ~/.ssh/authorized_keys uporabnika, s katerim se prijavite. Vsaka vrstica je en ključ. Ključ lahko tja spravite na tri načine:
1. Pri namestitvi. Večina ponudnikov ima pri ustvarjanju ali ponovni namestitvi VPS polje za Vaš javni ključ. Pri WebOké se to polje na zaslonu VPS imenuje »SSH-ključ«; pri drugih ponudnikih deluje podobno. To je najboljši način: tako geslo nikoli ne rabi biti vklopljeno.
2. Z ssh-copy-id (macOS in Linux), dokler prijava z geslom še deluje:
anna@laptop:~$ ssh-copy-id anna@192.0.2.10
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed
anna@192.0.2.10's password:
Number of key(s) added: 13. Ročno, na primer iz sistema Windows ali prek konzole Vašega ponudnika. Vrstico iz datoteke .pub prilepite v authorized_keys in pravilno nastavite pravice:
anna@web1:~$ mkdir -p ~/.ssh
anna@web1:~$ nano ~/.ssh/authorized_keys
anna@web1:~$ chmod 700 ~/.ssh
anna@web1:~$ chmod 600 ~/.ssh/authorized_keysTe pravice niso podrobnost. Strežnik SSH jih preverja (nastavitev StrictModes je privzeto vklopljena): če lahko drugi pišejo v Vašo mapo .ssh ali v Vašo domačo mapo, Vaše ključe prezre. Takrat preprosto znova vidite poziv za geslo, brez jasnega sporočila o napaki. Kako se berejo pravice, se boste naučili v lekciji 3.1.
Nato preizkusite v novem oknu:
anna@laptop:~$ ssh anna@192.0.2.10
Enter passphrase for key '/home/anna/.ssh/id_ed25519':
anna@web1:~$Poziv zdaj prihaja z Vašega računalnika (geslo za Vaš ključ), ne več s strežnika.
ssh-agent: odklenete samo enkrat
Vsakokratno vnašanje gesla za ključ je nadležno. ssh-agent hrani Vaš odklenjeni ključ v pomnilniku, dokler ste prijavljeni v svoj računalnik:
anna@laptop:~$ ssh-add ~/.ssh/id_ed25519
Enter passphrase for /home/anna/.ssh/id_ed25519:
Identity added: /home/anna/.ssh/id_ed25519 (anna@laptop 2026)
anna@laptop:~$ ssh-add -l
256 SHA256:q3J8vX0bT2kPz9mWc1nR4sLh7uYdE5aF6gBiC0oN2xQ anna@laptop 2026 (ED25519)V sistemu macOS se agent poveže s shrambo ključev (Keychain), v sistemu Windows pa je to storitev »OpenSSH Authentication Agent« (enkrat jo vklopite v Storitvah). Tako imate udobje brez gesla, ključ na disku pa je kljub temu šifriran.
Bodite previdni s posredovanjem agenta (agent forwarding, ssh -A): s tem lahko strežnik, v katerega se prijavite, uporablja Vaš agent. Kdor je root na tem strežniku, lahko nato z Vašim ključem nadaljuje naprej. Uporabljajte ga le na strežnikih, ki jim popolnoma zaupate, ali pa uporabite ProxyJump (lekcija 2.3).
En ključ za vsako napravo in pregled, kateri so kje
Pogosta napaka: en zasebni ključ kopirate na prenosnik, osebni računalnik in telefon. Če izgubite eno napravo, morate ključ zamenjati povsod in vse naprave znova nastaviti. Bolje je:
- na vsaki napravi izdelajte svoj ključ, z jasno opombo (
-C "anna@telefoon"); - vse javne ključe zapišite v
authorized_keys, po enega v vrstico; - če izgubite napravo, odstranite samo tisto eno vrstico.
Redno preverjajte, kateri ključi imajo dostop:
anna@web1:~$ ssh-keygen -lf ~/.ssh/authorized_keys
256 SHA256:q3J8vX0bT2kPz9mWc1nR4sLh7uYdE5aF6gBiC0oN2xQ anna@laptop 2026 (ED25519)
256 SHA256:Zt5oP1yW8eQ3rK6sV0bN9mD2xA4cH7jL1uI5fG8tE3w anna@telefoon (ED25519)Če je med njimi ključ, ki ga ne prepoznate, je to opozorilni znak (lekcija 10.3). Vsiljivci radi dodajo svoj ključ v authorized_keys, da se lahko pozneje vrnejo.
Uporabite lahko tudi strojni ključ (FIDO2, na primer YubiKey). Z ssh-keygen -t ed25519-sk je skrivni del shranjen na samem ključu, ki se ga morate dotakniti ob vsaki uporabi. Ukradena datoteka je tako brez vrednosti. To je lep korak naprej, vendar za začetek ni potreben.
Ste izgubili zasebni ključ?
Če izgubite svoj edini zasebni ključ in je prijava z geslom izklopljena, prek SSH ne morete več vstopiti. Zato:
- na strežnik vedno namestite vsaj dva ključa (na primer s prenosnika in osebnega računalnika);
- vedite, kako deluje konzola Vašega ponudnika (lekcija 1.2). Tam se prijavite, kot bi na strežnik priključili tipkovnico, in to deluje tudi brez SSH. Pri WebOké se to na zaslonu VPS imenuje Console; drugi ponudniki jo imenujejo konzola VNC, spletna konzola ali konzola za nujne primere.
V sistemih AlmaLinux in Rocky Linux
Vse v tej lekciji deluje enako. Ena dodatna past: ko je SELinux vklopljen, mora imeti ~/.ssh pravilno varnostno oznako. Če ste mapo ustvarili ali kopirali ročno in je Vaš ključ prezrt, to popravi restorecon -Rv ~/.ssh.
Povzetek
- Par ključev sestavljata zasebni ključ (ostane pri Vas) in javni ključ (gre na strežnik, v
~/.ssh/authorized_keys). - Ključe izdelajte z
ssh-keygen -t ed25519na svojem računalniku, z geslom za ključ; za udobje uporabite ssh-agent. - Pravice so pomembne:
~/.sshna 700 inauthorized_keysna 600, sicer strežnik Vaš ključ prezre. - En ključ za vsako napravo, z jasno opombo, da lahko enega prekličete.
- Poskrbite za drugi ključ in poznajte konzolo svojega ponudnika kot vhod za nujne primere.
Kviz
Naloga
Naloga O2.1: Izdelava in uporaba ključa. Na svojem računalniku izdelajte ključ ed25519 z geslom za ključ in jasno opombo, ga namestite na strežnik (prek polja ponudnika, z ssh-copy-id ali ročno), preverite pravice in se v novem oknu prijavite s ključem. Nato vnesite prstni odtis svojega ključa (iz ssh-keygen -lf ~/.ssh/id_ed25519.pub) in odgovorite na vprašanji, kje je Vaš zasebni ključ in kaj storite, če ga izgubite. Program preveri le, ali ima prstni odtis pravilno obliko; ostalo opravite sami.
Naloga O2.1: Izdelava in uporaba ključa
To nalogo opravite sami; nihče je ne pregleda. Odkljukajte, kar ste naredili, in nalogo označite kot opravljeno.
Zasebni ključ ostane na Vaši lastni napravi, šifriran z geslom (passphrase), ne v mapi v oblaku ali v e-pošti. Ob kraji na vsakem strežniku iz authorized_keys odstranite vrstico te naprave in ustvarite nov ključ. Svojega zasebnega ključa nikoli ne prilepite, tudi tukaj ne.
Vaše kljukice in zapiski ostanejo samo v tem brskalniku, nikamor jih ne pošiljamo. Če ste prijavljeni, v Moji tečaji shranimo samo podatek, da ste nalogo opravili.
Za nadaljnje branje
Koraki v teh člankih veljajo za zaslon VPS in nadzorne plošče WebOké; pri drugih ponudnikih deluje podobno.
- Prijava na Vaš VPS prek SSH (in ustvarjanje ključa SSH)
- Priročnik DirectAdmin 15.2: Ključi SSH in prijava s SSH
- Nimate več dostopa do svojega VPS: kaj storiti?
- Priročnik za ssh-keygen: https://man.openbsd.org/ssh-keygen
- Opombe ob izdaji OpenSSH 9.5 (ed25519 kot privzeta vrsta): https://www.openssh.org/txt/release-9.5
- Preklic dostopa SSH do Vašega VPS-ja nekdanjemu zaposlenemu ali ob izgubi prenosnika
- VPS: od prve prijave do varnega strežnika 2.2: Ustvarjanje ključa SSH v sistemih Windows, Mac in Linux
- VPS: od prve prijave do varnega strežnika 2.3: Namestitev ključa na strežnik in preizkus
