Pokud spravujete server Ubuntu přes SSH, musí být veřejný klíč připraven, než se dotknete ověřování heslem. V tomto bodě se mi často ukazuje opak: zajistíme zabezpečení sshdZnovu načteme službu a pak zjistíme, že klíč nebyl nikdy správně otestován.
V této příručce začínáme s klíčem ed25519Nainstalujeme veřejný klíč na server, otevřeme druhou relaci pro jeho otestování a teprve poté zakážeme hesla. Netrvá to déle a zabrání to tomu, abyste se zamkli.

Vytvořte si na počítači SSH klíč ed25519
Na vašem lokálním počítači vygenerujte klíč ed25519. Toto je formát, který bych dnes zvolil pro typickou SSH administraci.
ssh-keygen -t ed25519 -a 100 -C "admin@post"
Příkaz se vás zeptá, kam chcete klíč uložit. Pokud ještě nemáte vyhrazený klíč, můžete ponechat navrhovanou cestu:
~/.ssh/id_ed25519
Přidejte heslo. Na notebooku nebo počítači, který opouští kancelář, bych nenechával soukromý klíč nechráněný. Heslo chrání klíč v případě zkopírování souboru nebo napadení počítače.
Dále ověřte, zda oba soubory existují:
ls -l ~/.ssh/id_ed25519 ~/.ssh/id_ed25519.pub
Soubor bez přípony .hospoda je soukromý klíč. Nesmí být odeslán na server, kopírován do tiketu ani sdílen. Soubor .hospoda je veřejný klíč, ten, který nainstalujete na Ubuntu.
Instalace veřejného klíče v Ubuntu
Pokud stále máte přístup heslem, nejjednodušší metodou je ssh-copy-id :
ssh-copy-id -i ~/.ssh/id_ed25519.pub uživatel@server
Nahradit uživatel prostřednictvím cílového SSH účtu a server podle IP adresy nebo jména IN. Příkaz přidá váš veřejný klíč do ~/.ssh/authorized_keys straně serveru.
Li ssh-copy-id není k dispozici, můžete to provést ručně z existující SSH relace:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
Vložte jeden řádek: kompletní obsah souboru id_ed25519.pubNikdy nevkládejte soukromý klíč. Pokud si nejste jisti, veřejný soubor obvykle začíná na ssh-ed25519.
Před zavřením té staré otestujte druhou relaci.
Neukončujte aktuální SSH relaci. Otevřete druhý terminál a otestujte připojení pomocí klíče:
ssh -i ~/.ssh/id_ed25519 uživatel@server
Pokud se k serveru připojíte bez hesla k účtu, klíč funguje. Pokud připojení stále vyžaduje heslo uživatele, nejprve zkontrolujte oprávnění:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
ls -ld ~/.ssh
ls -l ~/.ssh/autorizované_klíče
V Ubuntu také zkontrolujte protokoly SSH, pokud je klíč odmítnut:
sudo journalctl -u ssh -n 80 --no-pager
Nesprávný vlastník složky, klíč vložený přes více řádků nebo jiný cílový účet – to vše stačí k zablokování ověřování. Neměňte konfiguraci SSH, dokud tento krok nedokončíte.
Před vypnutím hesel připravte sshd
Před změnou konfigurace si zálohujte hlavní soubor:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
Dále zkontrolujte, zda se v něm nacházejí nějaké soubory /etc/ssh/sshd_config.d/ již definováno ověřování pomocí klíče nebo hesla:
sudo grep -R "^Ověřování veřejného klíče|^Ověřování hesla" /etc/ssh/sshd_config /etc/ssh/sshd_config.d/*.conf 2>/dev/null
V Ubuntu raději vytvořím samostatný soubor, než abych upravoval deset řádků uprostřed hlavního souboru:
sudo nano /etc/ssh/sshd_config.d/99-disable-password.conf
Přidat:
Ověřování veřejného klíče ano
Heslo Authentication no
Před opětovným načtením SSH otestujte syntaxi. Na vzdáleném serveru je to neměnné.
sudo /usr/sbin/sshd -t
Pokud příkaz nic nevrátí, syntaxe je platná. Pokud se zobrazí chyba, opravte ji před opětovným načtením.
Znovu načtěte SSH bez omezení přístupu
Jakmile je syntaxe ověřena, znovu načtěte službu:
sudo systemctl reload ssh
sudo systemctl status ssh --no-pager
Nechte první relaci otevřenou. V druhém terminálu znovu otestujte připojení založené na klíči:
ssh -i ~/.ssh/id_ed25519 uživatel@server
Také otestujte, zda selže připojení bez klíče, pokud máte testovací účet nebo počítač, kde klíč není načten. Cílem je ověřit realitu, ne jen přečíst konfigurační řádek.
Pokud používáte SSH v Ubuntu, mějte průvodce po ruce. restartování SSH v UbuntuA pokud máte lokální firewall, zkontrolujte si také pravidla v článku o UFW před otevřením serveru.
Kontroly, které brání lockdownu
- soukromý klíč zůstává výhradně ve vašem počítači;
- veřejný klíč je skutečně uvnitř
~/.ssh/authorized_keyssprávný uživatel; - práva jsou správná
~/.sshAautorizované_klíče; - druhá SSH relace na klíč funguje před jakýmkoli přerušením;
sudo /usr/sbin/sshd -tnevrací žádnou chybu;- Firewall stále povoluje správný SSH port.
Pokud po změně ztratíte přístup přes SSH, budete muset použít konzoli pro zotavení, KVM, přístup cloudového poskytovatele nebo záchranný režim. Tato metoda si klade za cíl tomu zabránit. Pro komplexnější opravu se můžete také podívat na průvodce na čistá přeinstalace SSH na Ubuntu.
Pro oficiální dokumentaci Ubuntu spravuje stránku na OpenSSHServerReferenční stránky ssh-keygen A ssh-copy-id Také podrobně popisují zde použité možnosti.