Prejsť na obsah
Aktuálny kupón:zľava 10 %Uplatniť v objednávke

SSH kľúč: prihlásenie bez hesla (ed25519, PuTTYgen)

Vytvoríte si SSH kľúč ed25519, nahráte ho na VPS a bezpečne vypnete prihlasovanie heslom. Postup pre Windows, macOS, Linux aj PuTTY, vrátane ssh-agenta a súboru ~/.ssh/config.

  • začiatočník
  • ~15 min
  • Aktualizované 9. 10. 2026

Vytvoríte si SSH kľúč, nahráte ho na VPS a budete sa prihlasovať bez hesla. Nakoniec prihlasovanie heslom vypnete, takže hádanie hesiel prestane mať zmysel. Postup je pre Windows, macOS, Linux aj PuTTY.

Čo budete potrebovať

  • VPS u StormHostu s Ubuntu 24.04 alebo Debianom 13
  • Funkčné pripojenie cez SSH heslom (návod)
  • Počítač s Windows 10/11, macOS alebo Linuxom
  • Približne 15 minút

Ako SSH kľúč funguje#

SSH kľúč tvoria dva súbory, ktoré k sebe patria:

SúborPríklad názvuKde jeKomu ho dať
Súkromný kľúčid_ed25519 (PuTTY: .ppk)Iba vo vašom počítači.Nikomu. Kto ho má, prihlási sa ako vy.
Verejný kľúčid_ed25519.pubNa VPS v súbore ~/.ssh/authorized_keys.Môžete ho dať kamkoľvek, zneužiť sa nedá.

Pri prihlásení VPS pošle vášmu počítaču úlohu, ktorú dokáže vyriešiť iba držiteľ súkromného kľúča. Súkromný kľúč pritom nikdy neopustí váš počítač. Kľúč typu ed25519 je moderný, krátky a bezpečný a podporujú ho všetky súčasné systémy.

Súkromný kľúč môžete navyše zamknúť heslom ku kľúču (passphrase). Keď vám niekto skopíruje súbor s kľúčom, bez tohto hesla ho nepoužije.

Vytvorenie kľúča#

Windows

  1. Otvorte Terminál (pravým tlačidlom na Štart › Terminál, vo Windows 10 Windows PowerShell).

  2. Spustite:

    PowerShell
    ssh-keygen -t ed25519 -C "notebook-jan"
  3. Na otázku Enter file in which to save the key (C:\Users\jan/.ssh/id_ed25519): stlačte Enter. Kľúč sa uloží do predvoleného umiestnenia, kde ho SSH samo nájde.

  4. Na otázku Enter passphrase zadajte heslo ku kľúču a stlačte Enter. Na Enter same passphrase again ho zopakujte. Heslo sa nezobrazuje. Keď necháte prázdne, kľúč nebude zamknutý.

Výsledok: súbory C:\Users\<UZIVATEL>\.ssh\id_ed25519 (súkromný) a id_ed25519.pub (verejný).

macOS

  1. Otvorte aplikáciu Terminál.

  2. Spustite:

    bash
    ssh-keygen -t ed25519 -C "macbook-jan"
  3. Na otázku Enter file in which to save the key stlačte Enter.

  4. Zadajte a zopakujte heslo ku kľúču (passphrase).

Výsledok: ~/.ssh/id_ed25519 a ~/.ssh/id_ed25519.pub.

Linux

  1. Otvorte terminál.

  2. Spustite:

    bash
    ssh-keygen -t ed25519 -C "pc-jan"
  3. Na otázku Enter file in which to save the key stlačte Enter.

  4. Zadajte a zopakujte heslo ku kľúču (passphrase).

Výsledok: ~/.ssh/id_ed25519 a ~/.ssh/id_ed25519.pub.

Čo príkaz robí:

  • ssh-keygen – program na vytváranie SSH kľúčov.
  • -t ed25519 – typ kľúča. Ed25519 odporúčame. Starší typ RSA použite iba pre zariadenia, ktoré ed25519 nevedia, a potom s dĺžkou -t rsa -b 4096.
  • -C "notebook-jan" – popis (komentár) na konci verejného kľúča. Podľa neho na VPS spoznáte, z ktorého počítača kľúč je. Popis nič nezabezpečuje, je iba na orientáciu.

Kľúč už máte?

Keď ssh-keygen napíše … already exists. Overwrite (y/n)?, odpovedzte n. Prepísaním by ste stratili starý kľúč a prístup všade, kde ho používate. Starý kľúč pokojne použite aj pre VPS.

Vytvorenie kľúča v PuTTYgen#

Ak sa pripájate cez PuTTY, vytvorte kľúč v programe PuTTYgen, ktorý sa inštaluje spolu s PuTTY.

  1. Spustite PuTTYgen.
  2. V časti Parameters zvoľte typ EdDSA a vedľa neho Ed25519 (255 bits).
  3. Kliknite na Generate a pohybujte myšou v prázdnej ploche okna, kým sa nenaplní ukazovateľ priebehu. Pohyb myši slúži ako zdroj náhody.
  4. Do poľa Key comment napíšte popis, napríklad notebook-jan.
  5. Do polí Key passphrase a Confirm passphrase zadajte heslo ku kľúču.
  6. Kliknite na Save private key a uložte súbor, napríklad C:\Users\<UZIVATEL>\.ssh\vps.ppk. Toto je súkromný kľúč.
  7. Označte a skopírujte celý text v poli Public key for pasting into OpenSSH authorized_keys file. Začína ssh-ed25519 AAAA… a končí popisom. Toto je verejný kľúč, ktorý nahráte na VPS ručne (pozri záložku Ručne nižšie).

Tlačidlo Save public key ukladá verejný kľúč v inom formáte, ktorý VPS neprijme. Vždy kopírujte text z poľa.

Nahranie verejného kľúča na VPS#

Windows

Windows nemá príkaz ssh-copy-id. Rovnakú prácu urobí tento príkaz v PowerShelli (za 203.0.113.10 dosaďte IP adresu VPS):

PowerShell
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh [email protected] "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
  • type $env:USERPROFILE\.ssh\id_ed25519.pub – vypíše obsah verejného kľúča ($env:USERPROFILE je váš priečinok C:\Users\<UZIVATEL>).
  • | – pošle výpis ako vstup ďalšiemu príkazu.
  • ssh [email protected] "…" – pripojí sa na VPS (opýta sa na root heslo) a spustí príkazy v úvodzovkách.
  • mkdir -p ~/.ssh – vytvorí priečinok .ssh, ak ešte neexistuje.
  • chmod 700 ~/.ssh – priečinok smie otvoriť iba vlastník. SSH príliš otvorené práva odmieta.
  • cat >> ~/.ssh/authorized_keys – pripojí kľúč na koniec súboru. Kľúče, ktoré tam už sú, zostanú.
  • chmod 600 ~/.ssh/authorized_keys – súbor smie čítať a meniť iba vlastník.

macOS

bash
ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected]
  • ssh-copy-id – nahrá verejný kľúč na server a nastaví správne práva.
  • -i ~/.ssh/id_ed25519.pub – ktorý kľúč nahrať.
  • [email protected] – používateľ a adresa VPS.

Opýta sa na root heslo a nakoniec vypíše Number of key(s) added: 1.

Linux

bash
ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected]
  • ssh-copy-id – nahrá verejný kľúč na server a nastaví správne práva.
  • -i ~/.ssh/id_ed25519.pub – ktorý kľúč nahrať.

Opýta sa na root heslo a nakoniec vypíše Number of key(s) added: 1.

Ručne

Hodí sa pre kľúč z PuTTYgenu alebo keď vám predchádzajúce postupy nefungujú.

  1. Pripojte sa k VPS heslom (PuTTY, terminál alebo konzola v prehliadači).

  2. Pripravte priečinok a otvorte súbor s kľúčmi:

    bash
    mkdir -p ~/.ssh && chmod 700 ~/.ssh
    nano ~/.ssh/authorized_keys
  3. Vložte verejný kľúč na samostatný riadok (v PuTTY pravým tlačidlom myši). Celý kľúč musí byť na jednom riadku: ssh-ed25519 AAAA… popisek.

  4. Uložte (Ctrl+O, Enter) a zatvorte editor (Ctrl+X).

  5. Nastavte práva:

    bash
    chmod 600 ~/.ssh/authorized_keys

Prihlásenie kľúčom#

Kľúč v predvolenom umiestnení (id_ed25519) nájde SSH klient sám, stačí bežný príkaz:

bash
ssh [email protected]

Ak ste kľúču nastavili heslo, klient sa opýta Enter passphrase for key. Zadáte heslo ku kľúču, nie root heslo.

Kľúč uložený inde alebo pod iným názvom zadáte prepínačom -i:

bash
ssh -i ~/.ssh/vps_klic [email protected]
  • -i ~/.ssh/vps_klic – cesta k súkromnému kľúču (súbor bez .pub).

PuTTY:

  1. Spustite PuTTY a načítajte uloženú reláciu (Load), alebo vyplňte IP adresu.
  2. V ľavom strome otvorte Connection › SSH › Auth › Credentials.
  3. Pri poli Private key file for authentication kliknite na Browse a vyberte súbor .ppk.
  4. Voliteľne: v Connection › Data vyplňte Auto-login username root.
  5. Vráťte sa na Session, kliknite na názov relácie a na Save, aby ste to nabudúce nemuseli nastavovať.
  6. Kliknite na Open.

Kľúč z ssh-keygen môžete v PuTTY použiť tiež: v PuTTYgene kliknite na Load, vyberte súbor id_ed25519 (prepnite filter súborov na All Files) a uložte ho cez Save private key ako .ppk. Opačne prevediete kľúč z PuTTYgenu do formátu OpenSSH cez Conversions › Export OpenSSH key.

ssh-agent: heslo ku kľúču iba raz#

ssh-agent si odomknutý kľúč pamätá, takže heslo ku kľúču nezadávate pri každom pripojení.

Windows

V PowerShelli spustenom ako správca zapnite službu agenta (v predvolenom stave je vypnutá):

PowerShell
Get-Service ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agent
  • Set-Service -StartupType Automatic – agent sa bude spúšťať so systémom.
  • Start-Service ssh-agent – spustí agenta hneď.

Potom v bežnom okne pridajte kľúč (opýta sa na heslo ku kľúču):

PowerShell
ssh-add $env:USERPROFILE\.ssh\id_ed25519

macOS

bash
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
  • --apple-use-keychain – uloží heslo ku kľúču do Kľúčenky macOS.

Aby SSH heslo z Kľúčenky použilo samo aj po reštarte Macu, pridajte na začiatok súboru ~/.ssh/config (pozri ďalšiu sekciu):

~/.ssh/configtext
Host *
    UseKeychain yes
    AddKeysToAgent yes
  • UseKeychain yes – heslo ku kľúču sa načíta z Kľúčenky (iba macOS).
  • AddKeysToAgent yes – odomknutý kľúč sa pri prvom použití pridá do agenta.

Linux

Väčšina desktopových prostredí agenta spúšťa sama. Kľúč pridáte príkazom:

bash
ssh-add ~/.ssh/id_ed25519

Overenie: ssh-add -l vypíše odtlačky kľúčov, ktoré má agent načítané.

Súbor ~/.ssh/config: pripojenie jedným slovom#

Do súboru config v priečinku .ssh (Windows: C:\Users\<UZIVATEL>\.ssh\config, bez prípony) si uložte nastavenie VPS:

~/.ssh/configtext
Host mojevps
    HostName 203.0.113.10
    User root
    Port 22
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes
DirektívaČo robí
Host mojevpsSkratka, ktorú budete písať namiesto adresy. Platí pre riadky pod ňou.
HostNameSkutočná IP adresa alebo doména VPS.
UserPoužívateľ, za ktorého sa prihlasujete.
PortPort SSH. Zmeňte, ak ste SSH presunuli na iný port.
IdentityFileSúkromný kľúč pre tento VPS.
IdentitiesOnly yesSkúšať iba kľúč z IdentityFile, nie všetky kľúče z agenta. Predídete chybe Too many authentication failures.

Potom sa pripojíte príkazom ssh mojevps. Skratku používajú aj scp a sftp.

Vypnutie prihlasovania heslom#

Kým je prihlasovanie heslom zapnuté, boty ho môžu ďalej skúšať. Po vypnutí VPS prijme iba kľúč.

Čo vypnutie hesla ovplyvní v zákazníckom účte

Záložky Súbory a Databázy sa k VPS prihlasujú heslom. Po vypnutí hesla prestanú fungovať. Súbory potom prenášajte SFTP klientom s kľúčom (WinSCP aj FileZilla kľúč ovládajú) a databázu spravujte cez SSH tunel. Konzola v prehliadači funguje ďalej. Prehľad všetkých dopadov je v návode Zabezpečenie nového VPS.

Najprv overte, že prihlásenie kľúčom funguje

Ak vypnete heslo a kľúč nefunguje, cez SSH sa neprihlásite. Než budete pokračovať, otvorte nové okno a prihláste sa kľúčom bez zadania root hesla. Pôvodné okno nechajte celý čas otvorené. Keby sa napriek tomu niečo pokazilo, prihláste sa cez konzolu v prehliadači root heslom a súbor z kroku 1 zmažte.

  1. Vytvorte (alebo otvorte) vlastný konfiguračný súbor SSH servera:

    bash
    nano /etc/ssh/sshd_config.d/00-zabezpeceni.conf
  2. Vložte nastavenie:

    /etc/ssh/sshd_config.d/00-zabezpeceni.confini
    PasswordAuthentication no
    KbdInteractiveAuthentication no
    PubkeyAuthentication yes
    PermitRootLogin prohibit-password

    Ak už v súbore máte PermitRootLogin no (z návodu Zabezpečenie nového VPS), posledný riadok vynechajte.

    NastavenieČo robíOdporúčaná hodnotaKedy zmeniť
    PasswordAuthenticationPovoľuje prihlásenie heslom.noNikdy, ak chcete mať heslo vypnuté.
    KbdInteractiveAuthenticationIný spôsob zadania hesla (interaktívna výzva). Aj s vypnutým PasswordAuthentication by cez neho išlo heslo zadať.noyes iba pre dvojfázové overenie cez PAM (pokročilé).
    PubkeyAuthenticationPovoľuje prihlásenie kľúčom. Predvolená hodnota je yes, uvádzame ju pre istotu.yesNikdy.
    PermitRootLoginPrihlásenie roota. prohibit-password = root iba kľúčom.prohibit-passwordno, ak pracujete pod vlastným používateľom so sudo.
  3. Uložte a zatvorte editor.

  4. Skontrolujte, že platia práve vaše hodnoty:

    bash
    sshd -t && sshd -T | grep -Ei "^(passwordauthentication|kbdinteractiveauthentication|pubkeyauthentication|permitrootlogin)"
    • sshd -t – kontrola syntaxe konfigurácie. Pri chybe vypíše súbor a riadok a ďalší príkaz sa nespustí.
    • sshd -T – vypíše výslednú platnú konfiguráciu po načítaní všetkých súborov.
    • grep -Ei "…" – vyberie iba štyri sledované nastavenia.

    Výstup musí obsahovať tieto štyri riadky (poradie sa môže líšiť):

    Výstuptext
    permitrootlogin without-password
    pubkeyauthentication yes
    passwordauthentication no
    kbdinteractiveauthentication no

    without-password je starší názov pre prohibit-password a znamená to isté. Ubuntu 24.04 aj Debian 13 vypisujú starší názov, novšie verzie OpenSSH vypíšu prohibit-password. Ak ste nastavili no, uvidíte permitrootlogin no.

    Keď niektorý riadok ukazuje inú hodnotu (typicky passwordauthentication yes), rovnaké nastavenie je v súbore, ktorý sa načítava skôr. Nájdete ho príkazom grep -rni "passwordauthentication" /etc/ssh/sshd_config.d/. Riadok v ňom zakomentujte znakom # na začiatku a kontrolu zopakujte.

  5. Reštartujte SSH server:

    bash
    systemctl restart ssh

    Súčasné spojenie zostane otvorené.

  6. V novom okne skúste prihlásenie vynútiť heslom:

    bash
    ssh -o PubkeyAuthentication=no [email protected]

    Server musí odpovedať Permission denied (publickey). To je správne: heslo už neprijíma.

  7. V ďalšom okne sa prihláste normálne kľúčom (ssh [email protected]). Až keď to funguje, zatvorte pôvodné okno.

Prečo súbor 00-⁠zabezpeceni.conf

SSH server číta najprv súbory z priečinka /etc/ssh/sshd_config.d/ (podľa abecedy) a potom hlavný /etc/ssh/sshd_config. Pri každom nastavení platí prvá nájdená hodnota. Na VPS môže byť súbor ako 50-cloud-init.conf s PasswordAuthentication yes. Vďaka číslu 00 sa váš súbor načíta skôr a jeho hodnoty vyhrajú. Kontrola cez sshd -T vám to vždy potvrdí.

Viac počítačov, odobratie a záloha kľúča#

  • Ďalší počítač: vytvorte na ňom vlastný kľúč s iným popisom a nahrajte ho rovnako. Každý kľúč je v ~/.ssh/authorized_keys na samostatnom riadku. Kopírovať jeden súkromný kľúč medzi počítačmi neodporúčame.
  • Odobratie kľúča (stratený notebook, odchod kolegu): otvorte nano ~/.ssh/authorized_keys a zmažte riadok s jeho popisom. Platí okamžite.
  • Záloha: súkromný kľúč si uložte do správcu hesiel alebo na šifrované úložisko. Keď ho stratíte a heslo máte vypnuté, prihláste sa cez konzolu v prehliadači a nahrajte nový verejný kľúč.
  • Iný používateľ než root: kľúč patrí do /home/<UZIVATEL>/.ssh/authorized_keys a súbor musí vlastniť tento používateľ.

Overenie#

  • ssh root@<IP_ADRESA_VPS> vás prihlási bez root hesla (nanajvýš sa opýta na heslo ku kľúču).
  • ssh -o PubkeyAuthentication=no root@<IP_ADRESA_VPS> skončí Permission denied (publickey).
  • sshd -T ukazuje passwordauthentication no.

Keď niečo nefunguje#

VPS sa stále pýta na root heslo#

Kľúč sa nepoužil. Spustite pripojenie s podrobným výpisom:

bash
ssh -v [email protected]
  • -v – podrobný výpis. Hľadajte riadky Offering public key (klient kľúč ponúkol) a Server accepts key (server ho prijal).

Keď klient kľúč neponúka, je v inom súbore: použite -i alebo IdentityFile. Keď ho server neprijíma, skontrolujte na VPS práva:

bash
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
journalctl -u ssh -n 30
  • journalctl -u ssh -n 30 – posledných 30 záznamov SSH servera. Hlásenie Authentication refused: bad ownership or modes znamená nesprávne práva alebo vlastníka priečinka .ssh.

Skontrolujte tiež, že je kľúč v authorized_keys na jednom riadku a začína ssh-ed25519.

Permission denied (publickey).#

Heslo je vypnuté a kľúč server neprijal. Postupujte ako v predchádzajúcom bode. Ak sa neprihlásite vôbec, použite konzolu v prehliadači.

Windows: WARNING: UNPROTECTED PRIVATE KEY FILE! alebo Bad permissions#

K súkromnému kľúču majú prístup aj iní používatelia počítača (typicky po skopírovaní z iného miesta) a klient ho odmietne použiť. Nastavte práva v PowerShelli:

PowerShell
icacls $env:USERPROFILE\.ssh\id_ed25519 /inheritance:r
icacls $env:USERPROFILE\.ssh\id_ed25519 /grant:r "$($env:USERNAME):(R)"
  • /inheritance:r – odoberie práva zdedené z priečinka.
  • /grant:r "<UZIVATEL>:(R)" – nastaví iba vášmu účtu právo čítať.

Na macOS a Linuxe rovnakú chybu opravíte príkazom chmod 600 ~/.ssh/id_ed25519.

Load key "…": invalid format#

Snažíte sa v OpenSSH použiť kľúč vo formáte PuTTY (.ppk). Preveďte ho v PuTTYgene cez Conversions › Export OpenSSH key.

PuTTY: Server refused our key#

Na VPS nie je správny verejný kľúč. Skopírujte znova text z poľa Public key for pasting into OpenSSH authorized_keys file (nie súbor zo Save public key) a vložte ho do ~/.ssh/authorized_keys na jeden riadok.

Too many authentication failures#

Agent ponúka príliš veľa kľúčov. Použite IdentitiesOnly yes v ~/.ssh/config, alebo prepínače -i ~/.ssh/id_ed25519 -o IdentitiesOnly=yes.

Zhrnutie

  • Súkromný kľúč zostáva iba vo vašom počítači, verejný kľúč patrí do ~/.ssh/authorized_keys na VPS.
  • Kľúč vytvoríte príkazom ssh-keygen -t ed25519 -C "popisek" alebo v PuTTYgene (EdDSA, Ed25519).
  • Nahranie: ssh-copy-id (macOS, Linux), vo Windows type … | ssh …, alebo ručne.
  • Heslo vypnete súborom /etc/ssh/sshd_config.d/00-zabezpeceni.conf a výsledok overíte príkazom sshd -T.
  • Pred zatvorením pôvodného okna vždy otestujte prihlásenie kľúčom v novom okne.
  • Vypnuté heslo vypne aj záložky Súbory a Databázy; konzola funguje ďalej.

Hľadanie v návodoch