Configurer l’accès SSH par clé et désactiver l’authentification par mot de passe sur Ubuntu Server¶
Résumé
Ce tutoriel explique comment renforcer la sécurité d'un serveur Ubuntu en configurant l'authentification SSH par clé cryptographique, puis en désactivant complètement l'accès par mot de passe. C'est une mesure de durcissement (hardening) fondamentale pour protéger votre serveur contre les attaques par force brute.
| Propriété | Valeur |
|---|---|
| Difficulté | Débutant |
| OS / Environnement | Ubuntu 24.04 LTS |
| Dernière mise à jour | 2026-06-02 |
Contexte¶
Par défaut, l'accès SSH à un serveur Ubuntu (ou à toute distribution Linux) est souvent sécurisé uniquement par un mot de passe. Bien qu'un mot de passe fort soit une première ligne de défense, il reste vulnérable aux attaques par force brute et aux fuites de données.
L'authentification par clé SSH repose sur une paire de clés cryptographiques (une privée et une publique). Elle est non seulement beaucoup plus sécurisée, mais aussi plus pratique à l'usage, car elle vous évite de taper votre mot de passe à chaque connexion.
Cette procédure est la suite logique des mesures de sécurité de base comme la configuration d'UFW et l'installation de Fail2ban.
Prérequis¶
- Un serveur Ubuntu accessible en SSH (avec un utilisateur disposant des droits
sudo). - Un poste client (Linux, macOS, ou Windows avec PowerShell/Git Bash) depuis lequel vous vous connecterez.
Procédure¶
Étape 1 : Générer une paire de clés SSH sur le poste client¶
La première étape consiste à créer la paire de clés sur la machine depuis laquelle vous allez vous connecter (votre poste de travail, pas le serveur).
Sur votre poste client, ouvrez un terminal et tapez la commande suivante. Nous utiliserons l'algorithme Ed25519, qui est actuellement la norme recommandée pour sa sécurité et ses performances.
Explication des paramètres
-t ed25519: Spécifie le type de clé à créer.-C: Permet d'ajouter un commentaire (généralement une adresse email ou le nom du poste) pour identifier facilement la clé.
Le système vous posera quelques questions :
- Emplacement de sauvegarde : Appuyez sur Enter pour accepter l'emplacement par défaut (
~/.ssh/id_ed25519). - Passphrase (phrase secrète) : Il est fortement recommandé d'entrer une phrase secrète pour protéger votre clé privée en cas de vol de votre ordinateur. Si vous préférez ne pas en mettre (déconseillé pour des environnements critiques), appuyez simplement sur Enter.
Étape 2 : Copier la clé publique sur le serveur¶
Maintenant que vos clés sont générées, vous devez envoyer la clé publique (id_ed25519.pub) sur votre serveur Ubuntu. La clé privée (id_ed25519) ne doit jamais quitter votre poste.
Utilisez la commande ssh-copy-id, qui automatise l'ajout de la clé publique dans le fichier ~/.ssh/authorized_keys de votre utilisateur sur le serveur.
Le système vous demandera le mot de passe de votre utilisateur sur le serveur pour effectuer cette copie initiale.
Alternative pour les utilisateurs Windows sans ssh-copy-id
Si vous êtes sous Windows et que la commande ssh-copy-id n'est pas disponible, vous pouvez utiliser cette commande PowerShell pour faire la même chose :
Étape 3 : Tester la connexion par clé¶
Avant de désactiver l'authentification par mot de passe, il est crucial de s'assurer que l'authentification par clé fonctionne correctement, sinon vous risquez de vous bloquer en dehors du serveur !
Essayez de vous connecter au serveur :
Si vous aviez configuré une passphrase à l'étape 1, elle vous sera demandée. Autrement, vous devriez être connecté instantanément sans qu'on vous demande le mot de passe de l'utilisateur distant.
Étape 4 : Désactiver l'authentification par mot de passe¶
Une fois que vous avez confirmé que la connexion par clé fonctionne, vous pouvez fermer la porte aux attaques par force brute en refusant les mots de passe.
Sur votre serveur Ubuntu (via votre connexion SSH ouverte à l'étape précédente), éditez le fichier de configuration du service SSH :
Recherchez la ligne concernant PasswordAuthentication. Elle est souvent commentée (précédée d'un #) ou définie sur yes.
Modifiez-la pour qu'elle ressemble exactement à ceci (assurez-vous d'enlever le # s'il est présent) :
Profitez-en pour vérifier que l'authentification par clé publique est bien activée (c'est le cas par défaut) :
Enregistrez et quittez l'éditeur (Ctrl+O, Enter, Ctrl+X).
Étape 5 : Redémarrer le service SSH¶
Pour appliquer les modifications, redémarrez le service SSH sur le serveur :
Attention
Ne fermez pas votre session SSH actuelle tout de suite ! Ouvrez un nouveau terminal sur votre poste client et essayez de vous connecter. Si cela fonctionne, vous pouvez fermer toutes vos fenêtres en toute sécurité.
Vérification¶
Pour vérifier que l'authentification par mot de passe est bien désactivée, essayez de vous connecter au serveur depuis une machine (ou en forçant l'authentification par mot de passe) qui n'a pas la clé SSH configurée.
Vous pouvez forcer SSH à ignorer vos clés locales avec cette commande :
Résultat attendu
Le serveur doit refuser la connexion immédiatement, sans même vous demander de mot de passe, avec un message du type :
utilisateur@adresse_ip_du_serveur: Permission denied (publickey).
Aide-mémoire¶
| Commande / Action | Description |
|---|---|
ssh-keygen -t ed25519 |
Génère une nouvelle paire de clés SSH (Ed25519) |
ssh-copy-id user@ip |
Copie la clé publique sur le serveur distant |
sudo nano /etc/ssh/sshd_config |
Édite le fichier de configuration du serveur SSH |
sudo systemctl restart ssh |
Applique les modifications de la configuration SSH |