SSH OTP
Fügen Sie zeitbasierte Einmalcodes zur SSH-Anmeldung hinzu, indem Sie Linux PAM und das PAM-Modul von Google Authenticator verwenden.
Vor der Ausführung
Dieses Ubuntu-Beispiel installiert ein zusätzliches PAM-Modul und ändert die Serverauthentifizierung. Halten Sie eine bestehende Verwaltungssitzung und einen unabhängigen Konsolen- oder Wiederherstellungszugriff offen. Konfigurieren und testen Sie jedes Konto vor der Durchsetzung; Bewahren Sie die OTP-Geheim- und Notfallcodes sicher auf und veröffentlichen Sie sie niemals. Synchronisieren Sie die Serveruhr. Stellen Sie sicher, dass Ihr SSH-Client interaktive Eingabeaufforderungen über die Tastatur unterstützt und dass Automatisierungs- und Wiederherstellungskonten weiterhin verwendbar sind. Der Beispiel-PAM-Stack behält Common-Auth bei, was möglicherweise das Systemkennwort sowie das OTP erfordert: Public Key plus Keyboard-Interactive allein garantiert nicht genau zwei Eingabeaufforderungen oder genau zwei Faktoren. PAM-Dateien, Richtlinien und Dienstnamen variieren je nach Distribution; Wenden Sie dieses Beispiel nicht unverändert auf macOS- oder Windows-Server an.
Prüfen Sie nach dem Anwenden der Änderungen in einer neuen SSH-Sitzung die Anmeldung und das gewünschte Verhalten. Lassen Sie die aktuelle Sitzung bis zur erfolgreichen Prüfung geöffnet, damit Sie die Konfiguration bei Bedarf wiederherstellen können.
Authentifizierungs-Apps
Scannen Sie den Registrierungs-QR-Code mit einer TOTP-App auf dem Smartphone oder geben Sie den geheimen Schlüssel manuell ein. Schützen Sie QR-Code und Schlüssel und bewahren Sie die Notfallcodes sicher auf. Die App ist unabhängig vom PAM-Modul des Servers.
2FAS bietet optionale Backups; die Synchronisierung mehrerer Geräte ist eine Premium-Funktion. Die Verfügbarkeit hängt von Plattform und Tarif ab.
Beispiele
Installieren Sie das PAM-Modul unter Ubuntu. Das Modul ist von OpenSSH getrennt und erfordert Administratorrechte.
sudo apt update
sudo apt install libpam-google-authenticatorFühren Sie das Registrierungstool für jedes Konto aus, das OTP verwenden soll. Befolgen Sie die interaktiven Anweisungen, fügen Sie das Konto einer Authentifizierungs-App hinzu und speichern Sie die Notfallcodes sicher. Teilen oder protokollieren Sie das angezeigte Geheimnis nicht.
google-authenticatorFügen Sie in der vorhandenen SSH-PAM-Dienstdatei (normalerweise /etc/pam.d/sshd) das Modul als Authentifizierungsregel hinzu und behalten Sie dabei alle vorhandenen Konto-, Sitzungs- und anderen Regeln bei. Dieses Fragment behält die Common-Auth; Ihre PAM-Richtlinie verlangt möglicherweise auch ein Systemkennwort. Fügen Sie nullok nicht hinzu, wenn OTP erforderlich ist.
Öffnen Sie die Datei mit nano:
sudo nano /etc/pam.d/sshd@include common-auth
auth required pam_google_authenticator.soFühren Sie diese Einstellungen in die effektive SSH-Serverkonfiguration ein. Dies erfordert einen öffentlichen Schlüssel und eine interaktive PAM-Tastatur-Authentifizierung; Vorhandene Include-Reihenfolge- oder Match-Blöcke können das Ergebnis verändern. Überschreiben Sie nicht die gesamte Konfiguration.
Öffnen Sie die Datei mit nano:
sudo nano /etc/ssh/sshd_configUsePAM yes
PubkeyAuthentication yes
KbdInteractiveAuthentication yes
PasswordAuthentication no
AuthenticationMethods publickey,keyboard-interactive:pamÜberprüfen Sie die Syntax und überprüfen Sie die wirksame Richtlinie, bevor Sie das Verfahren zum Neuladen des SSH-Dienstes des Systems anwenden. Verwenden Sie sshd -T -C mit dem entsprechenden Benutzer und der entsprechenden Adresse, wenn Übereinstimmungsregeln gelten. Überprüfen Sie in einer separaten Sitzung den Schlüssel und alle angeforderten Faktoren, bevor Sie die ursprüngliche Sitzung schließen.
sudo sshd -t && sudo sshd -T && sudo systemctl reload sshOptional: Öffentlicher Schlüssel und OTP
Für Schlüssel und OTP ohne zusätzliches Kontopasswort muss der SSH-PAM-auth-Stack angepasst werden. Das Entfernen von common-auth betrifft alle Konten dieses SSH-Dienstes und kann andere Richtlinien umgehen. Prüfen Sie die übrigen auth-Regeln mit der Administration; erhalten Sie account- und session-Regeln sowie eine bestehende Sitzung und einen unabhängigen Wiederherstellungszugang.
Dies ist nur ein beispielhafter Ausschnitt für Ubuntu, keine vollständige PAM-Datei. Kommentieren Sie common-auth erst nach Prüfung der Auswirkungen aus. Fügen Sie kein nullok hinzu. Andere auth-Regeln können weitere Faktoren verlangen.
Öffnen Sie die Datei mit nano:
sudo nano /etc/pam.d/sshd# /etc/pam.d/sshd: auth fragment only
# @include common-auth
auth required pam_google_authenticator.soPrüfen Sie nach dem Zusammenführen der SSH-Einstellungen die wirksamen Werte. Die ausgegebenen Schlüssel sind klein geschrieben. Include-Reihenfolge und Match-Blöcke können das Ergebnis ändern; verwenden Sie dafür sshd -T -C mit den Verbindungsdaten.
sudo sshd -T | grep -E '^(usepam|pubkeyauthentication|kbdinteractiveauthentication|passwordauthentication|authenticationmethods) 'Prüfen und laden Sie wie oben beschrieben neu. Verbinden Sie sich in einer zweiten Clientsitzung mit registriertem Konto und privatem Schlüssel und geben Sie den OTP-Code ein. Prüfen Sie, dass ohne erforderlichen Schlüssel oder Code keine Anmeldung möglich ist, bevor Sie die erste Sitzung schließen.
ssh -i ~/.ssh/id_ed25519 alice@server.example.comSecure Pipes unterstützt SSH-keyboard-interactive-Abfragen zur Eingabe des Codes. Dies ist unabhängig vom OTP zum Entsperren der App. Das gemeinsame OTP-Geheimnis liegt auf dem Server und in der Authenticator-App; Secure Pipes muss es für diese Anmeldung nicht speichern.
Maßgebliche Quellen
Geprüft am 27. Oktober 2026