Une clé SSH vous permet de vous connecter à un serveur avec une paire de clés cryptographiques au lieu d'un mot de passe. Les mots de passe sont vulnérables aux attaques par force brute, fastidieux à saisir à chaque fois et difficiles à automatiser dans des scripts. L'authentification par clé est à la fois plus sûre et bien plus pratique : vous la configurez une fois, puis vous vous connectez d'une seule commande à chaque session. Dans ce guide, vous apprendrez pas à pas à générer une clé de zéro, à l'installer sur votre serveur et à ajouter les réglages qui rendent l'usage quotidien sans effort.
Comment fonctionne une clé SSH ?
Une clé SSH se compose de deux fichiers : une clé privée et une clé publique. La clé privée reste uniquement sur votre ordinateur et n'est jamais partagée ; la clé publique est copiée sur chaque serveur où vous souhaitez vous connecter. Lors de la connexion, le serveur lance un défi contre la clé publique et ne laisse entrer qu'un client capable de prouver qu'il détient la clé privée correspondante. Grâce à cette approche asymétrique, la clé privée ne circule jamais sur le réseau.
- Clé privée :
~/.ssh/id_ed25519— gardez-la secrète, ne la partagez avec personne. - Clé publique :
~/.ssh/id_ed25519.pub— copiez-la librement sur les serveurs.
Générer la paire de clés
Sur les systèmes modernes, l'algorithme privilégié est Ed25519 : court, rapide et robuste. Exécutez cette commande dans votre terminal :
ssh-keygen -t ed25519 -C "nom@exemple.com"
L'option -C ajoute un commentaire (généralement un e-mail) à la clé, ce qui aide à distinguer plusieurs clés. La commande demande un chemin d'enregistrement et une passphrase (phrase secrète). Appuyez sur Entrée pour accepter le chemin par défaut (~/.ssh/id_ed25519). La passphrase chiffre votre clé privée avec un mot de passe supplémentaire ; elle protège la clé si votre ordinateur est volé, il est donc déconseillé de la laisser vide.
Si votre système ne prend pas en charge Ed25519 (serveurs très anciens), une clé RSA de 4096 bits est une alternative sûre :
ssh-keygen -t rsa -b 4096 -C "nom@exemple.com"
Installer la clé publique sur le serveur
La méthode la plus pratique est l'outil ssh-copy-id. Il ajoute votre clé publique au fichier ~/.ssh/authorized_keys du serveur avec les bonnes permissions :
ssh-copy-id utilisateur@ip-serveur
Cette commande demande votre mot de passe une dernière fois ; une fois réussie, vous vous connectez ensuite avec la clé. Si ssh-copy-id n'est pas disponible (par exemple sous Windows ou un hébergement restreint), vous pouvez ajouter la clé manuellement :
cat ~/.ssh/id_ed25519.pub | ssh utilisateur@ip-serveur \
"mkdir -p ~/.ssh && chmod 700 ~/.ssh && \
cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Les permissions sont essentielles : le dossier ~/.ssh doit être en 700 et le fichier authorized_keys en 600. Des permissions incorrectes amènent SSH à rejeter la clé pour des raisons de sécurité et à redemander silencieusement un mot de passe.
Raccourcir la connexion avec ~/.ssh/config
Au lieu de taper une longue commande à chaque fois, créez un fichier ~/.ssh/config sur votre client et définissez un alias pour la connexion :
Host monserveur
HostName 46.202.156.61
User utilisateur
Port 22
IdentityFile ~/.ssh/id_ed25519
Après cette définition, ssh monserveur suffit ; SSH utilise automatiquement la bonne adresse, l'utilisateur, le port et la clé. C'est particulièrement pratique avec les hébergeurs qui utilisent un port non standard (par exemple Port 65002).
Saisir la passphrase une seule fois avec ssh-agent
Si vous avez défini une passphrase, vous ne voulez pas la taper à chaque connexion. ssh-agent garde votre clé en mémoire pour la session :
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Sur macOS, vous pouvez stocker la clé dans le Trousseau pour la rendre persistante : ssh-add --apple-use-keychain ~/.ssh/id_ed25519. Sous Linux, la plupart des environnements de bureau lancent l'agent automatiquement à la connexion, il suffit donc d'exécuter ssh-add une fois.
Désactiver la connexion par mot de passe et renforcer la sécurité
Une fois que vous avez vérifié que la connexion par clé fonctionne, désactiver complètement la connexion par mot de passe sur le serveur améliore grandement la sécurité. Modifiez /etc/ssh/sshd_config sur le serveur :
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin prohibit-password
Pour appliquer le changement, redémarrez le service SSH : sudo systemctl restart ssh (sur certaines distributions sshd). Important : avant d'appliquer ce réglage, vérifiez toujours dans un terminal séparé que vous pouvez vous connecter avec la clé ; sinon vous risquez de vous verrouiller hors du serveur.
Utiliser la même clé avec des services comme GitHub
Vous pouvez aussi utiliser la même clé SSH avec les services d'hébergement Git. Copiez le contenu de votre clé publique et collez-le dans la section des clés SSH des paramètres de GitHub/GitLab :
cat ~/.ssh/id_ed25519.pub
Testez ensuite la connexion avec ssh -T git@github.com. Ainsi, git push et git pull fonctionnent en toute sécurité avec la clé, sans demander de mot de passe.
Questions fréquentes
Que se passe-t-il si je perds ma clé privée ?
Sans sauvegarde de la clé privée, vous devez retrouver l'accès à chaque serveur où elle sert en générant et en installant une nouvelle clé. Sauvegardez donc votre clé privée en lieu sûr et ne la collez jamais dans un dépôt public ou un canal de discussion.
Puis-je me connecter au même serveur depuis plusieurs ordinateurs ?
Oui. Il vaut mieux générer une clé distincte sur chaque ordinateur et ajouter la clé publique de chacune au fichier authorized_keys du serveur. Ainsi, si vous perdez un appareil, vous ne supprimez que sa clé et les autres ne sont pas affectées.
Laisser la passphrase vide est-il sûr ?
Les scripts automatisés et les environnements CI/CD peuvent nécessiter une clé sans passphrase, mais sur votre machine personnelle utilisez-en toujours une. Une passphrase rend la clé privée inutilisable à elle seule même si le fichier tombe entre de mauvaises mains.
Vous voulez configurer votre serveur de façon sûre et fluide ? Si vous avez besoin d'aide pour le durcissement SSH, l'automatisation du déploiement ou la gestion de serveur, contactez-moi.