đ Guide Complet : Authentification SSH par ClĂ©s
L'authentification par clés SSH remplace avantageusement les mots de passe. Elle est plus sécurisée, insensible aux attaques par force brute, et indispensable pour l'automatisation avec des outils comme Ansible (AWX).
1. đ§ Le Concept : ClĂ© Publique vs ClĂ© PrivĂ©e
L'authentification SSH repose sur la cryptographie asymétrique. Au lieu d'avoir un mot de passe unique, on utilise un couple de fichiers indissociables :
| đ La ClĂ© Publique (Le Cadenas) | đïž La ClĂ© PrivĂ©e (La ClĂ© physique) |
|---|---|
|
|
2. đ ïž GĂ©nĂ©rer sa paire de clĂ©s
On utilise aujourd'hui l'algorithme ED25519, qui est plus moderne, plus rapide et plus sécurisé que l'ancien RSA.
Ouvrez un terminal sur votre machine locale et tapez :
ssh-keygen -t ed25519 -C "cle-admin-cluster"
-t ed25519: Spécifie l'algorithme cryptographique.-C "...": Un commentaire pour vous rappeler à quoi sert cette clé (trÚs utile quand on en a plusieurs).
Note : L'outil vous demandera oĂč sauvegarder (laissez par dĂ©faut) et si vous voulez une "passphrase". Pour l'automatisation (Ansible/AWX), laissez la passphrase vide en appuyant deux fois sur EntrĂ©e.
3. đ DĂ©ployer la clĂ© (MĂ©thode classique)
Pour autoriser votre clé sur un serveur distant, il faut copier le contenu de la clé publique (le cadenas) dans le fichier ~/.ssh/authorized_keys du serveur. La commande ssh-copy-id fait cela automatiquement :
# Remplacer 'utilisateur' et 'ip_du_serveur'
ssh-copy-id -i ~/.ssh/id_ed25519.pub utilisateur@10.151.x.x
Il vous demandera le mot de passe du serveur une derniĂšre fois pour installer le cadenas. Ensuite, vous pourrez vous connecter sans mot de passe !
4. đ€ DĂ©ploiement Massif (La boucle du Sysadmin)
Si vous avez 15 serveurs ou LXC à configurer d'un coup, faire la commande précédente manuellement est fastidieux (taper "yes" pour l'empreinte, taper 15 fois le mot de passe...).
Voici comment automatiser le déploiement de la clé publique avec une boucle Bash et l'outil sshpass.
Prérequis :
Installez l'utilitaire sshpass sur votre machine d'administration :
sudo apt update && sudo apt install sshpass -y
Le Script de boucle :
Modifiez ce bloc avec vos IPs, votre utilisateur cible, et votre mot de passe, puis collez-le dans le terminal.
# 1. On stocke le mot de passe dans une variable d'environnement
export SSHPASS='MonMotDePasseSuperSecret'
# 2. On lance la boucle sur notre liste d'IPs
for ip in 10.151.151.230 10.151.151.244 10.151.151.100; do
echo -e "\n=== Copie de la clé sur root@$ip ==="
# sshpass : injecte le mot de passe automatiquement
# StrictHostKeyChecking=no : accepte automatiquement la nouvelle empreinte (le fameux 'yes')
sshpass -e ssh-copy-id -o StrictHostKeyChecking=no -i ~/.ssh/id_ed25519.pub root@$ip
done
# 3. On détruit la variable pour des raisons de sécurité
unset SSHPASS