SSH OTP
Ajoutez des codes à usage unique basés sur le temps à la connexion SSH à l'aide de Linux PAM et du module PAM de Google Authenticator.
Avant de commencer
Cet exemple Ubuntu installe un module PAM supplémentaire et modifie l'authentification du serveur. Gardez une session d'administration existante et une console indépendante ou un accès de récupération ouverts. Configurer et tester chaque compte avant l'application ; stockez les codes secrets et d’urgence OTP en toute sécurité et ne les publiez jamais. Synchronisez l'horloge du serveur. Confirmez que votre client SSH prend en charge les invites interactives au clavier et que les comptes d'automatisation et de récupération restent utilisables. L'exemple de pile PAM conserve l'authentification commune, qui peut nécessiter le mot de passe du système ainsi que l'OTP : la clé publique et l'interaction avec le clavier ne garantissent pas en soi exactement deux invites ou exactement deux facteurs. Les fichiers, politiques et noms de services PAM varient selon la distribution ; n'appliquez pas cet exemple tel quel aux serveurs macOS ou Windows.
Après application des modifications, vérifiez dans une nouvelle session SSH que la connexion et le fonctionnement attendu sont corrects. Gardez la session actuelle ouverte jusqu’à la fin de ces vérifications afin de pouvoir rétablir la configuration si nécessaire.
Applications d’authentification
Sur votre téléphone, utilisez une application TOTP pour scanner le code QR d’inscription ou saisir le secret manuellement. Protégez le code QR et le secret et conservez les codes de secours en lieu sûr. L’application est distincte du module PAM du serveur.
2FAS propose des sauvegardes facultatives ; la synchronisation multi-appareil est une fonction Premium. Sa disponibilité dépend de la plateforme et de l’offre.
Exemples
Installez le module PAM sur Ubuntu. Le module est distinct d'OpenSSH et nécessite des privilèges d'administrateur.
sudo apt update
sudo apt install libpam-google-authenticatorExécutez l’outil d’inscription pour chaque compte qui utilisera OTP. Suivez les invites interactives, ajoutez le compte à une application d'authentification et stockez en toute sécurité les codes d'urgence. Ne partagez pas et n'enregistrez pas le secret affiché.
google-authenticatorDans le fichier de service SSH PAM existant (généralement /etc/pam.d/sshd), ajoutez le module en tant que règle d'authentification tout en préservant tous les comptes, sessions et autres règles existants. Ce fragment conserve l'authentification commune ; votre politique PAM peut également demander un mot de passe système. N'ajoutez pas nullok lorsqu'OTP est requis.
Ouvrez le fichier avec nano :
sudo nano /etc/pam.d/sshd@include common-auth
auth required pam_google_authenticator.soFusionnez ces paramètres dans la configuration effective du serveur SSH. Cela nécessite une clé publique et une authentification interactive par clavier PAM ; L'ordre d'inclusion ou les blocs de correspondance existants peuvent modifier le résultat. N'écrasez pas toute la configuration.
Ouvrez le fichier avec nano :
sudo nano /etc/ssh/sshd_configUsePAM yes
PubkeyAuthentication yes
KbdInteractiveAuthentication yes
PasswordAuthentication no
AuthenticationMethods publickey,keyboard-interactive:pamValidez la syntaxe et inspectez la politique en vigueur avant d'appliquer la procédure de rechargement du service SSH du système. Utilisez sshd -T -C avec l'utilisateur et l'adresse concernés lorsque les règles de correspondance s'appliquent. À partir d'une session distincte, vérifiez la clé et tous les facteurs demandés avant de fermer la session d'origine.
sudo sshd -t && sudo sshd -T && sudo systemctl reload sshOption : clé publique et OTP
Pour demander une clé puis un OTP sans mot de passe de compte, adaptez les règles auth PAM de SSH. Retirer common-auth du service PAM SSH affecte tous ses comptes et peut contourner d’autres règles. Vérifiez les autres règles auth avec l’administrateur ; conservez les règles account et session, une session ouverte et un accès de récupération indépendant.
Cet extrait Ubuntu illustre les règles auth et ne constitue pas un fichier PAM complet. Ne commentez common-auth qu’après avoir évalué son impact. N’ajoutez pas nullok. D’autres règles auth peuvent demander des facteurs supplémentaires.
Ouvrez le fichier avec nano :
sudo nano /etc/pam.d/sshd# /etc/pam.d/sshd: auth fragment only
# @include common-auth
auth required pam_google_authenticator.soAprès avoir intégré la configuration SSH ci-dessus, vérifiez les valeurs effectives. Les noms affichés sont en minuscules. L’ordre des Include et les blocs Match peuvent changer le résultat ; utilisez sshd -T -C avec les paramètres de connexion pour Match.
sudo sshd -T | grep -E '^(usepam|pubkeyauthentication|kbdinteractiveauthentication|passwordauthentication|authenticationmethods) 'Validez et rechargez comme indiqué ci-dessus. Depuis une seconde session cliente, connectez-vous avec le compte inscrit et sa clé privée, puis saisissez le code. Vérifiez que l’accès échoue sans la clé ou le code requis avant de fermer la session initiale.
ssh -i ~/.ssh/id_ed25519 alice@server.example.comSecure Pipes prend en charge les invites SSH keyboard-interactive pour saisir le code demandé. Cet OTP est distinct de celui qui déverrouille l’application. Le secret OTP partagé est présent sur le serveur et dans l’application d’authentification ; Secure Pipes n’a pas besoin de le conserver pour cette connexion.
Références officielles
Vérifié le 27 octobre 2026