Authentifizierung (2FA) für Debian über SSH einrichten (Google Authenticator / TOTP)

Wenn dein Debian-Server (oder Raspberry Pi OS) per SSH erreichbar ist, solltest du ihn unbedingt zusätzlich absichern.
Mit 2-Faktor-Authentifizierung (2FA) schützt du dein System selbst dann, wenn jemand dein Passwort kennt.

Für Debian nutzt man dafür meist den Google Authenticator.
Wichtig: Du brauchst kein Google-Konto – es handelt sich um den offenen Standard TOTP (Time-based One-Time Password).

Hier kommt die vollständige Schritt-für-Schritt-Anleitung zur Absicherung von SSH mit 2FA.

✅ Voraussetzungen

  • Debian Server oder Raspberry Pi OS
  • SSH-Zugang funktioniert bereits
  • Ein Smartphone mit einer TOTP-App (z. B. Google Authenticator, Authy oder Bitwarden)

1️⃣ Benötigtes PAM-Modul installieren

Zuerst installierst du das Google-Authenticator-PAM-Modul:

 sudo apt update sudo apt install libpam-google-authenticator 

2️⃣ 2FA für deinen Benutzer einrichten

⚠ Wichtig:
Führe diesen Schritt mit dem Benutzer aus, mit dem du dich später per SSH einloggst – NICHT als root.

Starte das Setup:

 google-authenticator 

Beantworte die Fragen wie folgt:

FrageAntwortEmpfehlung
Do you want authentication tokens to be time-based?yStandard TOTP
QR-Code anzeigen?ScannenMit deiner Authenticator-App
Emergency scratch codesAufschreiben!Backup bei Handyverlust
Update your .google_authenticator file?ySpeichert Konfiguration
Disallow multiple uses of the same token?ySchutz vor Replay
Increase time window?nNur bei falscher Systemzeit
Enable rate-limiting?ySchutz vor Brute-Force

Nach Abschluss wird die Datei .google_authenticator im Home-Verzeichnis gespeichert.

3️⃣ PAM für SSH aktivieren

Jetzt bringen wir SSH bei, 2FA zu verwenden.

Öffne die PAM-Konfiguration:

 sudo nano /etc/pam.d/sshd 

Füge ganz oben (oder direkt unter @include common-auth) folgende Zeile ein:

 auth required pam_google_authenticator.so 

Datei speichern.

4️⃣ SSH-Daemon konfigurieren

Öffne die SSH-Konfigurationsdatei:

 sudo nano /etc/ssh/sshd_config 

Suche folgende Einträge und stelle sicher, dass sie so gesetzt sind:

 UsePAM yes KbdInteractiveAuthentication yes 

Hinweis: In älteren Debian-Versionen heißt die Option ChallengeResponseAuthentication.

Optional – wenn du Passwort + 2FA erzwingen willst, stelle sicher:

 PasswordAuthentication yes 

Speichern und schließen.

5️⃣ SSH-Dienst neu starten

 sudo systemctl restart ssh 

⚠️ WICHTIG: Sicherheitstest durchführen

Schließe deine aktuelle SSH-Verbindung NICHT!

Stattdessen:

  1. Öffne ein neues Terminal-Fenster
  2. Verbinde dich erneut per SSH
  3. Teste den Login

Wenn alles korrekt funktioniert:

  1. Passwort eingeben
  2. Danach erscheint: Verification code:
  3. 6-stelligen Code aus deiner Authenticator-App eingeben

Erst wenn das erfolgreich funktioniert, kannst du das alte Terminal schließen.

🔐 Optional: Noch sicherer machen (Empfohlen)

Für maximale Sicherheit kannst du zusätzlich:

Nur SSH-Key + 2FA erlauben

In /etc/ssh/sshd_config:

 PasswordAuthentication no AuthenticationMethods publickey,keyboard-interactive 

Dann neu starten:

 sudo systemctl restart ssh 

Damit brauchst du:

  • SSH-Key
  • UND 2FA-Code

Das ist extrem sicher.

🛡 Fehlerbehebung

2FA wird nicht abgefragt?

Prüfe:

 sudo sshd -t 

Wenn keine Fehler angezeigt werden, ist die Konfiguration syntaktisch korrekt.

🎯 Fazit

Mit wenigen Schritten hast du:

  • Brute-Force-Angriffe stark reduziert
  • Passwortdiebstahl abgesichert
  • Deinen Debian-Server professionell gehärtet

2FA über SSH ist heute ein Sicherheitsstandard – besonders bei öffentlich erreichbaren Servern.


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *