Modul 2 · 2.1
Izrada i korištenje SSH ključeva
Modul 2: SSH i ključevi · Vrijeme čitanja: 10 minuta
Cilj učenja: Nakon ove lekcije znat ćete izraditi par ključeva, postaviti javni ključ na svoj poslužitelj, prijaviti se bez lozinke i čuvati svoj privatni ključ tako da izgubljeno prijenosno računalo ne postane katastrofa.
Ključni pojmovi: par ključeva, javni ključ, privatni ključ, ed25519, RSA, passphrase (zaporka ključa), ssh-agent, ssh-copy-id, authorized_keys, prava 700 i 600, ključ po uređaju, FIDO2 ključ
Zašto su ključevi bolji od lozinki
U lekciji 1.3 prijavili ste se lozinkom. To funkcionira, ali poslužitelj na internetu od prve minute dobiva posjete programa koji pogađaju lozinke. Pogledajte zapisnik novog poslužitelja:
root@web1:~# journalctl -u ssh --since "1 hour ago" | grep -c "Failed password"
214Stotine pokušaja na sat sasvim su uobičajene. Jaka lozinka će ih zaustaviti, ali time ste stvorili slabu točku koja Vam nije potrebna. Uz SSH ključ pogađanje nema smisla: nema ničega što bi se moglo pogoditi s popisa riječi.
Ključ se sastoji od dva dijela koja pripadaju jedan drugome, a zajedno čine par ključeva:
- Privatni ključ ostaje na Vašem računalu. Tko ima tu datoteku (i zna passphrase), može se prijaviti. Ne dijelite ga ni s kim, pa ni sa svojim pružateljem usluge ili korisničkom podrškom.
- Javni ključ dajete poslužitelju. Njega smije vidjeti svatko: njime se ne možete prijaviti, može služiti samo za provjeru.
Pri prijavi poslužitelj ne šalje lozinku preko veze. Vaše računalo potpisom dokazuje da posjeduje privatni ključ, a poslužitelj taj potpis provjerava javnim ključem. Čak i ako netko prati promet na mreži, ne vidi ništa što bi kasnije mogao ponovno upotrijebiti.
Izrada ključa
Ključ izrađujete na vlastitom računalu, ne na poslužitelju. Windows 10 i 11, macOS i Linux već imaju ssh-keygen. Otvorite PowerShell ili 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 2026Što se ovdje događa?
-t ed25519odabire vrstu ključa. Ed25519 je kratak, brz i siguran, a od verzije OpenSSH 9.5 to je i zadana vrsta ako ništa ne navedete. Morate li raditi sa starim sustavom koji ne poznaje ed25519, upotrijebite RSA s najmanje 3072 bita:ssh-keygen -t rsa -b 4096. Starije vrste poput DSA uklonjene su iz OpenSSH-a; nemojte ih koristiti.-Cje samo komentar. Upišite nešto po čemu ćete kasnije prepoznati s kojeg je uređaja ključ. To jako pomaže kada ključ morate opozvati.- Passphrase šifrira privatni ključ na Vašem disku. Ako Vam ukradu prijenosno računalo, lopov ima samo šifriranu datoteku. Bez passphrasea odmah ima pristup svim Vašim poslužiteljima.
Sada imate dvije datoteke:
| Datoteka | Što je | Dijeliti? |
|---|---|---|
~/.ssh/id_ed25519 | Privatni ključ | Nikada |
~/.ssh/id_ed25519.pub | Javni ključ, jedan redak teksta | Da, na poslužitelj |
Na Windowsima se nalaze u C:\Users\anna\.ssh\. Javni ključ je jedan redak koji počinje s ssh-ed25519:
anna@laptop:~$ cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHk2... anna@laptop 2026Postavljanje javnog ključa na poslužitelj
Poslužitelj traži javne ključeve u datoteci ~/.ssh/authorized_keys korisnika kojim se prijavljujete. Svaki redak je jedan ključ. Postoje tri načina da ključ dospije onamo:
1. Pri instalaciji. Većina pružatelja usluga pri izradi ili ponovnoj instalaciji VPS-a nudi polje za Vaš javni ključ. Kod WebOké to se polje zove "SSH ključ" na zaslonu VPS-a; kod drugih pružatelja funkcionira slično. Ovo je najbolji način: tada prijava lozinkom nikada ne mora biti uključena.
2. Pomoću ssh-copy-id (macOS i Linux), dok prijava lozinkom još radi:
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. Ručno, primjerice s Windowsa ili putem konzole Vašeg pružatelja usluga. Zalijepite redak iz svoje datoteke .pub u authorized_keys i ispravno postavite prava:
anna@web1:~$ mkdir -p ~/.ssh
anna@web1:~$ nano ~/.ssh/authorized_keys
anna@web1:~$ chmod 700 ~/.ssh
anna@web1:~$ chmod 600 ~/.ssh/authorized_keysTa prava nisu sitnica. SSH poslužitelj ih provjerava (postavka StrictModes zadano je uključena): ako drugi smiju pisati u Vašu mapu .ssh ili Vašu početnu mapu, poslužitelj zanemaruje Vaše ključeve. Tada ćete jednostavno ponovno vidjeti upit za lozinku, bez jasne poruke o pogrešci. Kako se čitaju prava, naučit ćete u lekciji 3.1.
Zatim testirajte u novom prozoru:
anna@laptop:~$ ssh anna@192.0.2.10
Enter passphrase for key '/home/anna/.ssh/id_ed25519':
anna@web1:~$Upit sada dolazi s Vašeg računala (passphrase Vašeg ključa), a ne više s poslužitelja.
ssh-agent: otključajte samo jednom
Svaki put upisivati passphrase je naporno. ssh-agent drži Vaš otključani ključ u memoriji dok ste prijavljeni na svoje računalo:
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)Na macOS-u se agent povezuje s privjeskom ključeva (Keychain), a na Windowsima je to usluga "OpenSSH Authentication Agent" (jednokratno je uključite u Uslugama, Services). Tako imate udobnost prijave bez lozinke, a ključ na disku ipak ostaje šifriran.
Oprezno s agent forwardingom (ssh -A): njime poslužitelj na koji se prijavljujete smije koristiti Vaš agent. Tko je root na tom poslužitelju, tada može nastaviti dalje s Vašim ključem. Koristite to samo na poslužiteljima kojima potpuno vjerujete ili umjesto toga upotrijebite ProxyJump (lekcija 2.3).
Jedan ključ po uređaju i znati koji se gdje nalazi
Česta pogreška: kopirati jedan privatni ključ na prijenosno računalo, stolno računalo i telefon. Izgubite li jedan uređaj, morate posvuda zamijeniti ključ i ponovno postaviti sve uređaje. Bolje je ovako:
- na svakom uređaju izradite zaseban ključ s jasnim komentarom (
-C "anna@telefoon"); - sve javne ključeve stavite u
authorized_keys, jedan po retku; - izgubite li uređaj, uklonite samo taj jedan redak.
Redovito provjeravajte koji ključevi imaju pristup:
anna@web1:~$ ssh-keygen -lf ~/.ssh/authorized_keys
256 SHA256:q3J8vX0bT2kPz9mWc1nR4sLh7uYdE5aF6gBiC0oN2xQ anna@laptop 2026 (ED25519)
256 SHA256:Zt5oP1yW8eQ3rK6sV0bN9mD2xA4cH7jL1uI5fG8tE3w anna@telefoon (ED25519)Ako ondje vidite ključ koji ne prepoznajete, to je znak za uzbunu (lekcija 10.3). Napadači rado dodaju vlastiti ključ u authorized_keys kako bi se kasnije mogli vratiti.
Hardverski ključ (FIDO2, primjerice YubiKey) također je mogućnost. Uz ssh-keygen -t ed25519-sk tajni dio nalazi se na samom ključu i morate ga dodirnuti pri svakoj upotrebi. Ukradena datoteka tada je bezvrijedna. To je lijep korak dalje, ali za početak nije nužan.
Izgubili ste privatni ključ?
Izgubite li svoj jedini privatni ključ, a prijava lozinkom je isključena, putem SSH-a više ne možete ući. Zato:
- na poslužitelj uvijek stavite barem dva ključa (primjerice s prijenosnog i stolnog računala);
- znajte kako radi konzola Vašeg pružatelja usluga (lekcija 1.2). Ondje se prijavljujete kao da ste na poslužitelj priključili tipkovnicu, a to radi i bez SSH-a. Kod WebOké se to zove Konzola na zaslonu VPS-a; drugi pružatelji to nazivaju VNC konzola, web konzola ili konzola za hitne slučajeve.
Na AlmaLinuxu i Rocky Linuxu
Sve u ovoj lekciji funkcionira jednako. Jedna dodatna zamka: kada je SELinux uključen, ~/.ssh mora imati ispravnu sigurnosnu oznaku. Ako ste mapu izradili ručno ili kopirali i Vaš se ključ zanemaruje, restorecon -Rv ~/.ssh to ispravlja.
Sažetak
- Par ključeva sastoji se od privatnog ključa (ostaje kod Vas) i javnog ključa (ide na poslužitelj, u
~/.ssh/authorized_keys). - Ključeve izrađujte naredbom
ssh-keygen -t ed25519na vlastitom računalu, s passphraseom; radi udobnosti koristite ssh-agent. - Prava su važna:
~/.sshna 700 iauthorized_keysna 600, inače poslužitelj zanemaruje Vaš ključ. - Jedan ključ po uređaju, s jasnim komentarom, kako biste mogli opozvati samo jedan.
- Osigurajte drugi ključ i upoznajte konzolu svog pružatelja usluga kao ulaz za hitne slučajeve.
Kviz
Zadatak
Zadatak O2.1: Izrada i korištenje ključa. Na vlastitom računalu izradite ed25519 ključ s passphraseom i jasnim komentarom, postavite ga na svoj poslužitelj (putem polja svog pružatelja usluga, pomoću ssh-copy-id ili ručno), provjerite prava i u novom se prozoru prijavite ključem. Zatim upišite otisak (fingerprint) svog ključa (iz ssh-keygen -lf ~/.ssh/id_ed25519.pub) i odgovorite na pitanja o tome gdje se nalazi Vaš privatni ključ i što ćete učiniti ako ga izgubite. Program provjerava samo ima li otisak ispravan oblik; ostalo radite sami.
Zadatak O2.1: Izrada i korištenje ključa
Ovaj zadatak rješavate sami; nitko ga ne provjerava. Označite što ste napravili i označite zadatak kao završen.
Privatni ključ ostaje na Vašem vlastitom uređaju, šifriran passphraseom, a ne u mapi u oblaku ili u e-pošti. U slučaju krađe uklonite redak tog uređaja iz authorized_keys na svakom poslužitelju i izradite novi ključ. Nikada ne lijepite svoj privatni ključ, pa ni ovdje.
Vaše kvačice i bilješke ostaju samo u ovom pregledniku; ne šaljemo ih nikamo. Ako ste prijavljeni, u Moji tečajevi čuvamo samo podatak da ste zadatak završili.
Dodatno štivo
Koraci u ovim člancima odnose se na zaslon VPS-a i upravljačke ploče tvrtke WebOké; kod drugih pružatelja usluga funkcionira slično.
- Prijava na Vaš VPS putem SSH-a (i izrada SSH ključa)
- DirectAdmin priručnik 15.2: SSH Keys i prijava putem SSH-a
- Više nemate pristup svom VPS-u: što sada?
- Priručnik za ssh-keygen: https://man.openbsd.org/ssh-keygen
- Bilješke uz izdanje OpenSSH 9.5 (ed25519 kao zadana vrsta): https://www.openssh.org/txt/release-9.5
- Opoziv SSH pristupa Vašem VPS-u u slučaju bivšeg zaposlenika ili izgubljenog prijenosnog računala
- VPS: od prve prijave do sigurnog poslužitelja 2.2: Izrada SSH ključa na Windowsu, Macu i Linuxu
- VPS: od prve prijave do sigurnog poslužitelja 2.3: Postavljanje Vašeg ključa na poslužitelj i testiranje
