Sécuriser l’accès SSH à votre serveur avec des clés
Un serveur exposé sur Internet reçoit des tentatives de connexion toute la journée. Passez de l’authentification par mot de passe aux clés, bloquez les intrus et gardez la main : le guide complet, sans vous enfermer dehors.
Dès qu’un serveur a une adresse publique, des robots tentent d’y entrer par SSH. Un mot de passe, même solide, reste une porte que l’on peut forcer à coups d’essais. Une paire de clés change la donne : la clé privée ne quitte jamais votre machine, et le serveur ne reconnaît que votre clé publique.
Ce guide s’adresse à des lecteurs à l’aise avec le terminal. Une règle d’or : ne fermez jamais votre session ouverte tant que la nouvelle configuration n’est pas validée dans une deuxième.
Avant de commencer
- Un serveur Linux (Debian ou Ubuntu dans cet exemple) accessible en SSH
- Un compte avec les droits
sudo - Une seconde session de secours ouverte pendant toute l’opération
-
Étape 1 : Générer une paire de clés
Sur votre poste (pas sur le serveur), créez une clé au format Ed25519, rapide et robuste. Protégez-la par une phrase secrète : elle chiffre la clé privée sur votre disque.
Sur votre poste ssh-keygen -t ed25519 -a 100 -C "portable-yanis" -
Étape 2 : Copier la clé publique sur le serveur
La commande
ssh-copy-idajoute votre clé publique au fichier~/.ssh/authorized_keysdu serveur. Elle demandera une dernière fois votre mot de passe.Sur votre poste ssh-copy-id -i ~/.ssh/id_ed25519.pub utilisateur@serveur.example -
Étape 3 : Vérifier la connexion par clé
Ouvrez une nouvelle session et connectez-vous. Si la phrase secrète de votre clé est demandée (et non le mot de passe du serveur), tout fonctionne.
Sur votre poste ssh utilisateur@serveur.example -
Étape 4 : Durcir la configuration du démon SSH
Sur le serveur, éditez
/etc/ssh/sshd_config(avecsudo) et vérifiez ou ajoutez les directives suivantes :/etc/ssh/sshd_config PubkeyAuthentication yes PasswordAuthentication no PermitRootLogin no AllowUsers utilisateurLe fichier sshd_config dans l’éditeur : quatre directives suffisent. -
Étape 5 : Valider, puis recharger le service
Testez d’abord la syntaxe : si la commande ne renvoie rien, tout est bon. Rechargez ensuite le service sans couper les sessions en cours, et ouvrez une troisième connexion pour confirmer que la clé fonctionne toujours.
Sur le serveur sudo sshd -t sudo systemctl reload ssh -
Étape 6 : Bannir automatiquement les intrus avec fail2ban
fail2banlit les journaux et bloque les adresses qui échouent trop souvent. Installez-le, puis créez un fichier de configuration local pour ne pas perdre vos réglages lors des mises à jour.Sur le serveur sudo apt install fail2ban sudo nano /etc/fail2ban/jail.local -
Étape 7 : Régler la « prison » SSH
Dans
jail.local, activez la protection SSH : cinq échecs en dix minutes valent un bannissement d’une heure./etc/fail2ban/jail.local [sshd] enabled = true maxretry = 5 findtime = 10m bantime = 1h -
Étape 8 : Simplifier vos connexions avec ~/.ssh/config
Pour ne plus retaper l’adresse, l’utilisateur et la clé, déclarez le serveur dans votre fichier de configuration client. Vous vous connecterez ensuite par un simple
ssh monserveur.~/.ssh/config Host monserveur HostName serveur.example User utilisateur IdentityFile ~/.ssh/id_ed25519 AddKeysToAgent yes
Pour finir
Votre serveur n’accepte plus que les clés autorisées, refuse la connexion directe du super-utilisateur et se débarrasse tout seul des importuns. Prochaines étapes pour aller plus loin : changer le port n’est pas une vraie protection, mais un pare-feu limitant l’accès à vos adresses l’est.