Modul 2 · 2.1
Vytvorenie a používanie SSH kľúčov
Modul 2: SSH a kľúče · Čas čítania: 10 minút
Cieľ lekcie: Po tejto lekcii dokážete vytvoriť pár kľúčov, umiestniť verejný kľúč na server, prihlásiť sa bez hesla a uchovávať súkromný kľúč tak, aby strata notebooku nebola katastrofou.
Kľúčové pojmy: pár kľúčov, verejný kľúč, súkromný kľúč, ed25519, RSA, passphrase, ssh-agent, ssh-copy-id, authorized_keys, práva 700 a 600, kľúč pre každé zariadenie, kľúč FIDO2
Prečo sú kľúče lepšie ako heslá
V lekcii 1.3 ste sa prihlásili heslom. Funguje to, ale server na internete má od prvej minúty návštevu programov, ktoré heslá hádajú. Pozrite sa do logu nového servera:
root@web1:~# journalctl -u ssh --since "1 hour ago" | grep -c "Failed password"
214Stovky pokusov za hodinu sú bežné. Silné heslo ich zastaví, no vytvorili ste slabé miesto, ktoré nepotrebujete. So SSH kľúčom je hádanie zbytočné: nie je tu nič, čo by sa dalo nájsť v zozname slov.
Kľúč sa skladá z dvoch častí, ktoré k sebe patria, z páru kľúčov:
- Súkromný kľúč zostáva na vašom počítači. Kto má tento súbor (a pozná passphrase), môže sa prihlásiť. Nezdieľajte ho s nikým, ani s poskytovateľom, ani s podporou.
- Verejný kľúč odovzdáte serveru. Môže ho vidieť ktokoľvek: nedá sa ním prihlásiť, len overovať.
Pri prihlásení server neposiela po linke žiadne heslo. Váš počítač podpisom preukáže, že má súkromný kľúč, a server tento podpis overí pomocou verejného kľúča. Aj keď niekto sleduje sieť, neuvidí nič, čo by mohol neskôr znova použiť.
Vytvorenie kľúča
Kľúč vytvárate na vlastnom počítači, nie na serveri. Windows 10 a 11, macOS aj Linux už obsahujú ssh-keygen. Otvorte PowerShell alebo Terminál:
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Čo sa tu deje?
-t ed25519volí typ. Ed25519 je krátky, rýchly a bezpečný a od verzie OpenSSH 9.5 je aj predvoleným typom, ak nič nezadáte. Ak musíte obsluhovať starý systém, ktorý ed25519 nepozná, použite RSA s aspoň 3072 bitmi:ssh-keygen -t rsa -b 4096. Staršie typy ako DSA boli z OpenSSH odstránené; nepoužívajte ich.-Cje len komentár. Uveďte doň niečo, podľa čoho neskôr spoznáte, z ktorého zariadenia kľúč pochádza. Veľmi to pomôže, keď budete musieť kľúč zrušiť.- Passphrase šifruje súkromný kľúč na disku. Ak vám notebook ukradnú, zlodej má zašifrovaný súbor. Bez passphrase má okamžite prístup ku všetkým vašim serverom.
Teraz máte dva súbory:
| Súbor | Čo to je | Zdieľať? |
|---|---|---|
~/.ssh/id_ed25519 | Súkromný kľúč | Nikdy |
~/.ssh/id_ed25519.pub | Verejný kľúč, jeden riadok textu | Áno, na server |
Vo Windows sú uložené v C:\Users\anna\.ssh\. Verejný kľúč je jeden riadok, ktorý začína na ssh-ed25519:
anna@laptop:~$ cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHk2... anna@laptop 2026Umiestnenie verejného kľúča na server
Server hľadá verejné kľúče v súbore ~/.ssh/authorized_keys používateľa, pod ktorým sa prihlasujete. Každý riadok je jeden kľúč. Kľúč tam môžete dostať tromi spôsobmi:
1. Pri inštalácii. Väčšina poskytovateľov má pri vytváraní alebo preinštalovaní VPS pole pre verejný kľúč. Vo WebOké sa toto pole volá "SSH kľúč" na obrazovke VPS; u iných poskytovateľov to funguje podobne. Je to najlepší spôsob: prihlasovanie heslom potom nemusí byť nikdy zapnuté.
2. Pomocou ssh-copy-id (macOS a Linux), kým ešte funguje prihlasovanie heslom:
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čne, napríklad z Windows alebo cez konzolu poskytovateľa. Vložte riadok zo súboru .pub do authorized_keys a nastavte správne práva:
anna@web1:~$ mkdir -p ~/.ssh
anna@web1:~$ nano ~/.ssh/authorized_keys
anna@web1:~$ chmod 700 ~/.ssh
anna@web1:~$ chmod 600 ~/.ssh/authorized_keysTieto práva nie sú detail. SSH server ich kontroluje (nastavenie StrictModes je predvolene zapnuté): ak môžu iní zapisovať do vášho priečinka .ssh alebo do domovského priečinka, vaše kľúče ignoruje. Uvidíte potom jednoducho opäť výzvu na heslo, bez zrozumiteľného chybového hlásenia. Ako čítať práva, sa naučíte v lekcii 3.1.
Potom to otestujte v novom okne:
anna@laptop:~$ ssh anna@192.0.2.10
Enter passphrase for key '/home/anna/.ssh/id_ed25519':
anna@web1:~$Výzva teraz prichádza od vášho počítača (passphrase vášho kľúča), už nie od servera.
ssh-agent: odomknúť raz
Zadávať passphrase zakaždým je nepohodlné. ssh-agent drží odomknutý kľúč v pamäti počas celého prihlásenia do vášho počítača:
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 macOS sa agent prepája s kľúčenkou, vo Windows ide o službu "OpenSSH Authentication Agent" (jednorazovo ju zapnite v Službách). Tak máte pohodlie bez hesla a zároveň zašifrovaný kľúč na disku.
Pozor na agent forwarding (ssh -A): server, na ktorý sa prihlasujete, potom môže používať vášho agenta. Kto má na tom serveri práva root, môže s vaším kľúčom pokračovať ďalej. Používajte to len na serveroch, ktorým úplne dôverujete, alebo použite ProxyJump (lekcia 2.3).
Jeden kľúč pre každé zariadenie a prehľad, kde ktorý je
Častá chyba: skopírovať jeden súkromný kľúč na notebook, PC aj telefón. Keď stratíte jedno zariadenie, musíte kľúč vymeniť všade a všetky zariadenia nastaviť znova. Lepšie je:
- na každom zariadení vytvoriť vlastný kľúč so zrozumiteľným komentárom (
-C "anna@telefoon"); - všetky verejné kľúče uložiť do
authorized_keys, jeden na riadok; - pri strate zariadenia odstrániť len ten jeden riadok.
Pravidelne kontrolujte, ktoré kľúče majú prístup:
anna@web1:~$ ssh-keygen -lf ~/.ssh/authorized_keys
256 SHA256:q3J8vX0bT2kPz9mWc1nR4sLh7uYdE5aF6gBiC0oN2xQ anna@laptop 2026 (ED25519)
256 SHA256:Zt5oP1yW8eQ3rK6sV0bN9mD2xA4cH7jL1uI5fG8tE3w anna@telefoon (ED25519)Ak tam nájdete kľúč, ktorý nepoznáte, je to varovný signál (lekcia 10.3). Útočníci radi vkladajú vlastný kľúč do authorized_keys, aby sa mohli neskôr vrátiť.
Možný je aj hardvérový kľúč (FIDO2, napríklad YubiKey). S ssh-keygen -t ed25519-sk je tajná časť uložená priamo v kľúči a pri každom použití sa ho musíte dotknúť. Ukradnutý súbor je potom bezcenný. Je to pekný krok vpred, no na začiatok nie je nutný.
Stratili ste súkromný kľúč?
Ak stratíte svoj jediný súkromný kľúč a prihlasovanie heslom je vypnuté, cez SSH sa už dnu nedostanete. Preto:
- majte na serveri vždy aspoň dva kľúče (napríklad z notebooku a z PC);
- zistite, ako funguje konzola vášho poskytovateľa (lekcia 1.2). Prihlasujete sa v nej, akoby ste k serveru pripojili klávesnicu, a funguje aj bez SSH. Vo WebOké sa volá Konzola na obrazovke VPS; iní poskytovatelia ju nazývajú konzola VNC, webová konzola alebo núdzová konzola.
V AlmaLinux a Rocky Linux
Všetko v tejto lekcii funguje rovnako. Jedna pasca navyše: pri zapnutom SELinux musí mať ~/.ssh správny bezpečnostný štítok. Ak ste priečinok vytvorili alebo skopírovali ručne a váš kľúč sa ignoruje, opraví to restorecon -Rv ~/.ssh.
Zhrnutie
- Pár kľúčov tvorí súkromný kľúč (zostáva u vás) a verejný kľúč (ide na server, do
~/.ssh/authorized_keys). - Kľúče vytvárajte príkazom
ssh-keygen -t ed25519na vlastnom počítači, s passphrase; pre pohodlie používajte ssh-agent. - Na právach záleží:
~/.sshna 700 aauthorized_keysna 600, inak server váš kľúč ignoruje. - Jeden kľúč pre každé zariadenie so zrozumiteľným komentárom, aby ste mohli zrušiť len jeden.
- Majte druhý kľúč a poznajte konzolu poskytovateľa ako núdzový vstup.
Kvíz
Úloha
Úloha O2.1: Vytvorenie a použitie kľúča. Na vlastnom počítači vytvorte kľúč ed25519 s passphrase a zrozumiteľným komentárom, umiestnite ho na server (cez pole poskytovateľa, ssh-copy-id alebo ručne), skontrolujte práva a v novom okne sa prihláste kľúčom. Potom zadajte odtlačok svojho kľúča (z ssh-keygen -lf ~/.ssh/id_ed25519.pub) a odpovedzte na otázky, kde je uložený váš súkromný kľúč a čo urobíte, ak ho stratíte. Program kontroluje len to, či má odtlačok správny tvar; zvyšok je na vás.
Úloha O2.1: Vytvorenie a použitie kľúča
Túto úlohu vykonávate sami, nikto ju nekontroluje. Odškrtnite, čo ste urobili, a označte úlohu ako splnenú.
Súkromný kľúč zostáva na vašom vlastnom zariadení, zašifrovaný prístupovou frázou (passphrase), nie v cloudovom priečinku ani v e-maile. Pri krádeži odstránite riadok daného zariadenia z authorized_keys na každom serveri a vytvoríte nový kľúč. Súkromný kľúč nikdy nikam nevkladajte, ani sem.
Vaše zaškrtnutia a poznámky zostávajú iba v tomto prehliadači, nikam ich neposielame. Po prihlásení si v sekcii Moje kurzy uchovávame iba to, že ste úlohu splnili.
Ďalšie čítanie
Postupy v týchto článkoch platia pre obrazovku VPS a panely WebOké; u iných poskytovateľov to funguje podobne.
- Prihlásenie na váš VPS cez SSH (a vytvorenie SSH kľúča)
- Návod na DirectAdmin 15.2: SSH kľúče a prihlasovanie cez SSH
- Nemáte už prístup k svojmu VPS? Čo robiť ďalej
- Príručka ssh-keygen: https://man.openbsd.org/ssh-keygen
- Poznámky k vydaniu OpenSSH 9.5 (ed25519 ako predvolený typ): https://www.openssh.org/txt/release-9.5
- Odobratie SSH prístupu k vášmu VPS bývalému zamestnancovi alebo pri strate notebooku
- VPS: od prvého prihlásenia po bezpečný server 2.2: Vytvorenie kľúča SSH vo Windows, Mac a Linux
- VPS: od prvého prihlásenia po bezpečný server 2.3: Nahratie kľúča na server a jeho otestovanie
