Automatisk SSH-inloggning med kryptonycklar istället för lösenord

Referenser:

https://www.ssh.com/ssh/
https://www.ssh.com/ssh/keygen
http://www.rebol.com/docs/ssh-auto-login.html
https://www.benhup.com/freebsd/openssh-configuration-with-elliptic-curve
https://www.techrepublic.com/article/how-to-easily-add-an-ssh-fingerprint-to-your-knownhosts-file-in-linux/

Vad behövs:

Ett kryptonyckelpar (med en publik nyckel och en privat nyckel) för varje klient som vill ansluta mot servern (SSH-server).
Den publika nyckeln läggs på servern och den privata används av klienten för att logga in på servern.

1. Skapa nyckelparet (inloggad på servern som den användare som ska ansluta från klienten):

På servern:

Nycklarna skapas som default i katalogen ~/.ssh

cd ~/.ssh
ssh-keygen -t ed25519

Tryck retur vid varje prompt. Ange en passphrase om du vill kryptera den privata nyckeln för ökad säkerhet.

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/maup/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/maup/.ssh/id_ed25519.
Your public key has been saved in /home/maup/.ssh/id_ed25519.pub.

2. Konfigurera servern att använda den publika nyckeln (id_ed25519.pub):

På servern:

cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys

Ändra filrättigheter så att filen authorized_keys inte är läsbar för andra.

chmod 600 ~/.ssh/authorized_keys

Observera >> som lägger till nyckeln i slutet av filen authorized_keys som kan innehålla flera publika nycklar.

3. Kopiera den privata nyckeln (id_ed25519) till klienten:

På klienten:

cp /media/MyUSB/id_ed25519 ~/.ssh/

Ändra filrättigheter så att den inte är läsbar för andra.

chmod 600 ~/.ssh/id_ed25519

4. Konfigurera klienten så att den privata nyckeln kopplas ihop med servern som har den publika nyckeln.

På klienten (byt ut “some.server.or.ip.com” mot serverns namn eller IP):

echo “Host myserver” >> ~/.ssh/config
echo “Hostname some.server.or.ip.com” >> ~/.ssh/config
echo “IdentityFile ~/.ssh/id_ed25519” >> ~/.ssh/config

5. Lägg in serverns host-fingerprint i klientens ~/.ssh/known_hosts för att vara säker på att det är rätt server som klienten ansluter mot.

På klienten (byt ut “some.server.or.ip.com” mot serverns namn eller IP):

ssh-keyscan -H some.server.or.ip.com >> ~/.ssh/known_hosts

(för paranoida) Jämför innehållet i ~/.ssh/known_hosts med *.pub-filerna i /etc/ssh på servern:

ls /etc/ssh/*.pub
/etc/ssh/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ed25519_key.pub /etc/ssh/ssh_host_rsa_key.pub

6. Testa

På klienten:

ssh myserver