Sécuriser SSH avec l'authentification double facteur (MFA) via Google Authenticator¶
Résumé
Ce tutoriel explique comment renforcer la sécurité d'un serveur Linux en ajoutant une authentification à deux facteurs (2FA/MFA) pour les connexions SSH, à l'aide du module PAM Google Authenticator.
| Propriété | Valeur |
|---|---|
| Difficulté | Intermédiaire |
| OS / Environnement | Ubuntu 24.04 / Debian |
| Dernière mise à jour | 2026-06-10 |
Contexte¶
Par défaut, l'accès SSH à un serveur repose sur un mot de passe ou une clé publique. Bien que l'authentification par clé SSH soit recommandée, l'ajout d'un deuxième facteur (MFA) offre une couche de protection supplémentaire essentielle en cas de compromission de votre clé ou de votre mot de passe. Le module Pluggable Authentication Module (PAM) de Google permet d'intégrer des codes à usage unique basés sur le temps (TOTP) générés par une application sur votre smartphone.
Attention
Il est vivement recommandé de garder une session SSH active durant toute l'opération pour éviter de vous bloquer en dehors de votre serveur en cas d'erreur de configuration.
Prérequis¶
- Un serveur sous Ubuntu/Debian avec un accès SSH fonctionnel.
- Les droits administrateur (utilisateur avec
sudo). - Un smartphone avec une application TOTP installée (Google Authenticator, Aegis, Authy, FreeOTP, etc.).
Procédure¶
Étape 1 : Installation du module PAM¶
Installez le paquet de la bibliothèque PAM Google Authenticator via le gestionnaire de paquets de votre distribution :
Étape 2 : Configuration du TOTP pour l'utilisateur¶
En tant que l'utilisateur qui va se connecter en SSH (ne pas utiliser sudo ici pour configurer l'utilisateur courant), exécutez la commande d'initialisation :
L'outil va vous poser une série de questions. Voici les recommandations :
- Voulez-vous que les jetons d'authentification soient basés sur le temps ? : Répondez
y(yes). - Un grand code QR s'affiche dans votre terminal. Scannez-le avec votre application TOTP sur votre smartphone.
- Mettez en sécurité vos codes de secours (scratch codes) : Copiez-les et gardez-les dans un gestionnaire de mots de passe. Ils vous sauveront si vous perdez votre téléphone.
- Voulez-vous mettre à jour le fichier
~/.google_authenticator? : Répondezy. - Interdire l'usage multiple du même jeton ? : Répondez
y(réduit le risque d'attaque par rejeu). - Compenser le désynchronisme temporel (time skew) ? : Répondez
n(sauf si vous rencontrez souvent des problèmes d'horloge). - Limiter à 3 essais de connexion toutes les 30 secondes ? : Répondez
y(protection contre le brute-force).
Étape 3 : Configuration du système PAM pour SSH¶
Il faut maintenant indiquer au système PAM d'exiger le code TOTP pour le service SSH. Éditez le fichier /etc/pam.d/sshd :
Ajoutez la ligne suivante à la fin du fichier :
(Si vous souhaitez que le MFA soit demandé uniquement à ceux qui l'ont configuré et ignorer les autres, utilisez plutôt auth required pam_google_authenticator.so nullok)
Sauvegardez (Ctrl+O, Enter) et fermez (Ctrl+X).
Étape 4 : Configuration du serveur SSH (sshd)¶
Ensuite, configurez le démon SSH pour accepter ce type d'authentification interactive. Éditez /etc/ssh/sshd_config :
Trouvez l'option KbdInteractiveAuthentication (ou ChallengeResponseAuthentication sur les anciennes versions) et passez-la à yes :
(Assurez-vous qu'elle n'est pas commentée, enlevez le # si présent)
Sauvegardez et fermez le fichier.
Étape 5 : Redémarrage du service SSH¶
Appliquez les modifications en redémarrant le service ssh :
Vérification¶
- Ne fermez pas votre session SSH actuelle !
- Ouvrez un nouveau terminal et tentez de vous connecter à votre serveur :
Résultat attendu
Après avoir saisi votre mot de passe (ou été authentifié par clé), le système doit vous demander le code :
Saisissez le code à 6 chiffres généré par votre application sur votre smartphone.Ressources¶
- Documentation officielle Ubuntu sur OpenSSH — Guide général SSH Ubuntu.
- Page GitHub de google-authenticator-libpam — Documentation et code source du module PAM.