Un mot de passe peut être deviné mille fois par seconde par une machine qui ne dort jamais. Une clé, non : il n'y a rien d'assez court à essayer. Le changement coûte dix minutes et supprime toute une famille d'attaques.

Générer la paire

ssh-keygen -t ed25519 -C "you@yourmachine"

Ed25519 est la valeur par défaut d'aujourd'hui : courte, rapide et solide. Donnez-lui une phrase de passe - si le portable est volé, cette phrase est la seule chose entre le voleur et vos serveurs.

Installer la moitié publique

ssh-copy-id ops@your-server

Cela ajoute la clé publique à ~/.ssh/authorized_keys sur le serveur. La moitié privée ne quitte jamais votre machine et ne doit jamais le faire.

La tester dans une NOUVELLE fenêtre

Ne fermez pas la session dans laquelle vous êtes. Ouvrez un second terminal et connectez-vous avec la clé. Si cela échoue, il vous reste la première fenêtre pour réparer.
ssh ops@your-server

Puis couper les mots de passe

# /etc/ssh/sshd_config
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
# then
systemctl reload ssh

Recharger, pas redémarrer : le rechargement garde les sessions en cours vivantes, donc une erreur ne vous déconnecte pas.

Quand cela ne marche pas

  • Les permissions. SSH refuse les clés dans un répertoire que d'autres peuvent lire : chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys
  • Le mauvais utilisateur. La clé va dans le répertoire personnel de l'utilisateur sous lequel vous vous connectez, pas dans celui de root.
  • Lisez la raison. ssh -v ops@server imprime chaque clé proposée et pourquoi chacune a été refusée.
Une clé par machine, et non une clé recopiée sur toutes. Quand un portable est perdu, vous retirez une ligne sur le serveur, et rien d'autre ne bouge.