Ověřování na základě veřejného klíče v SSH

Používání hesel je přežitek, pokud se připojujete na vaše zařízení přes SSH je mnohem bezpečnější a ve finále i jednodušší použít autorizaci přes veřejný klíč. Nejlepší na tom všem je, že je to nechutně triviální.

Nejprve vygenerujete privátní a veřejný klíč. Doporučuji nastavit heslo k certifikátu, k čemuž budete vyzváni (heslo lze později změnit).

ssh-keygen -t rsa -b 4096

Následovně je potřeba dostat bezpečným způsobem vygenerovaný veřejný klíč na server. Následující příkaz se o to postará.

ssh-copy-id vzdaleny-uzivatel@server-ip

Veřejný klíč bude uložen domovském adresáři vybraného uživatele .ssh/authorized_keys.

V tuto chvíli již bude fungovat přihlašování bez hesla pomocí veřejného klíče. Nicméně stále je tu možnost se přihlásit do počítače pomocí klasického hesla, čehož je dobré se vyvarovat. Následně je tedy dobré vypnout klasické přihlašování heslem.

sudo nano /etc/ssh/sshd_config

V souboru najděte hodnotu #PasswordAuthentication yes a změňte řádek následovně následující. Pozor je potřeba smazat hashtag #

PasswordAuthentication no

Dále zkontrolujte řádek ChallengeResponseAuthentication, jestli je odkomentovaný a nastavený následovně.

ChallengeResponseAuthentication no

Změny uložte a proveďte reset služby ssh.

sudo service ssh restart

Nutné zálohování

Protože jsme nyní zrušili přihlašování heslem, je životně důležité provést zálohu vygenerovaných klíčů, jinak se při jejich ztrátě nedostanete do vzdáleného počítače. Naštěstí je to triviální. Stačí zkopírovat soubor s klíči někam do bezpečného úložiště.

cp ~/.ssh/id_rsa* /cesta/k/bezpecnemu/ulozisti/

Obnova je snadná, stačí soubory zkopírovat zpět. Pokud však budete soubory obnovovat na jiném počítači, nebo účtu, nezapomeňte nastavit ownera souborů.

sudo chown new-user:new-user id_rsa*

Headless klient

Pokud se na server připojujete z počítače, který pracuje jen v příkazové řádce, zjistíte, že s každým přihlášením musíte zadat heslo ke klíči (pokud je nastavené). To lze vyřešit tak, že nainstalujete keychain.

sudo apt install keychain

Po instalaci je potřeba provést úpravu v souboru .bash_profile případně v .profile, následovně (stačí přidat nakonec souboru).

/usr/bin/keychain $HOME/.ssh/id_rsa
source $HOME/.keychain/$HOSTNAME-sh

Zdroj: www.linuxbabe.com/linux-server/setup-passwordless-ssh-login