Protokol SSH může kromě jména a hesla používat k přihlašování RSA/DSA/ECDSA klíče. Identita uživatele je prokázána kryptograficky a použití privátního klíče je navíc chráněno heslem. Serveru potom své jméno a heslo neposíláte.
Zabezpečení přihlášení na server je výjimečně důležité, protože při prolomení přihlášení bude vás server kompromitován a pravděpodobně zavirován, přidán do botnetu nebo zneužit k rozesílání spamu. Přihlášení na SSH portu 22 zkouší roboti na prakticky všech IP adresách v internetu a dojde k němu určitě i na vašem serveru. Dokážete si potom představit, jaké následky bude mít použití slabého hesla.
Chcete-li vědět více o principu fungování přihlášení z klíči, přečtete si článek na portále Interval.cz a zejména odstavec Jak SSH autentizuje uživatele.
Když se připojujete poprvé, uvidíte toto varování o neznámém hostu:
The authenticity of host 'domena .eu (217.198.117.xx)' can't be established.
ECDSA key fingerprint is 3a:22:8a:22:11:6f:37:b3:66:78:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? Yes
Znamená to, že se na server přihlašujete poprvé. Zapiště si fingerprint a přihlaste se podruhé.
Po potvrzení se host přidá do seznamu známých a už byste toto varování neměli vidět.
Pokud ho vidíte i při druhém přihlášení spolu s chybou níže, nepovedlo se přidání hostu do seznamu známých.
Failed to add the host to the list of known hosts (/home/user/.ssh/known_hosts).
Enter passphrase for key '/home/user/.ssh/id_ecdsa':
Potom stačí připojit se na ssh s právy roota, tedy sudo ssh root@domena.eu
Problém se zápisem do known_hosts tím bude vyřešen.
Druhou možností, kdy můžete toto varování vidět, je MITM útok. Je lepší server přidat do seznamu známých a nepotvrzovat při každém připojení, že host je neznámý. Pokud se vám to stane po přidání do seznamu, mějte se na pozoru, že se na serveru klíč změnil a můžete být cílem útoku.
Posledním krokem k zabezpečení přihlášení je zakázání přihlašování heslem. Důležité je si nejprve zazálohovat dvojici SSH klíčů, protože po jejich ztrátě se na server nepřihlásíte.
Zkopírujte soubor s nastavením SSH do záložního souboru:
cd /etc/ssh cp sshd_config sshd_config.origOtevřete konfiguraci SSH: nano sshd_config. Ve všech třech řádcích změňte Yes na No. Položky nejsou v konfiguraci u sebe, proto je můžete vyhledat po stisku Ctrl+W a napsání textu.
PasswordAuthentication yes
UsePAM yes
Potom službu restartujte: service ssh restart. Nyní je přihlášení SSH klíči zabezpečeno.
Nad rámec tohoto nastavení můžete ještě zvážit zakázání použití účtu Root (PermitRootLogin nastavit na no) a naslouchání SSH protokolu na jiném portu (lze snadno změnit v konfiguraci sshd_config). Pokud změníte SSH port z 22 na jiný, musíte ho definovat při přihlašování jako parametr - ssh username@hostname.com -p 50683.