SSH ist das Standardprotokoll für den Fernzugriff auf Linux-Server, doch allein mit einem Passwort oder einem privaten Schlüssel bleibt ein gewisses Sicherheitsrisiko bestehen. Mit Zwei-Faktor-Authentifizierung (2FA) lässt sich der SSH-Zugriff deutlich absichern. In dieser Anleitung richten wir 2FA mit Google Authenticator auf einem Ubuntu Server ein.

Voraussetzungen

  • Ein Ubuntu Server (20.04, 22.04 oder neuer)
  • Ein Benutzer mit sudo-Rechten
  • SSH-Zugriff

Schritt 1: Installation von Google Authenticator

Google Authenticator ist eine Open-Source-App, die zeitbasierte Einmalpasswörter (TOTP) generiert.

sudo apt update && sudo apt install libpam-google-authenticator -y

Schritt 2: Google Authenticator konfigurieren

Führe den folgenden Befehl aus, um 2FA für deinen Benutzer einzurichten:

google-authenticator

Beantworte die Fragen wie folgt:

  • «Do you want authentication tokens to be time-based?» → Y
  • QR-Code scannen oder den Code in deine Authenticator-App (z. B. Google Authenticator oder Authy) eingeben.
  • «Do you want me to update your .google_authenticator file?» → Y
  • «Do you want to disallow multiple uses of the same authentication token?» → Y
  • «Do you want to increase the time window?» → N
  • «Do you want to enable rate-limiting?» → Y

Schritt 3: PAM-Modul für 2FA aktivieren

Bearbeite die PAM-Authentifizierungsdatei:

sudo nano /etc/pam.d/sshd

Füge diese Zeile am Ende der Datei hinzu:

auth required pam_google_authenticator.so

Speichern und schliessen mit STRG + X, Y, ENTER.

Schritt 4: SSH-Server für 2FA konfigurieren

Bearbeite die SSH-Konfigurationsdatei:

sudo nano /etc/ssh/sshd_config

Suche folgende Zeilen und stelle sicher, dass sie so gesetzt sind:

ChallengeResponseAuthentication yes
UsePAM yes
AuthenticationMethods publickey,password publickey,keyboard-interactive

Speichern und schliessen, dann den SSH-Dienst neu starten:

sudo systemctl restart sshd

Schritt 5: Testen der 2FA-Anmeldung

Öffne ein neues Terminal und versuche, dich per SSH einzuloggen:

ssh dein-user@dein-server

Nach der Passworteingabe wird nun ein Einmalpasswort aus der Authenticator-App abgefragt. Erst nach erfolgreicher Eingabe erhältst du Zugriff.

Fazit

Die Aktivierung von 2FA für SSH bietet eine zusätzliche Schutzebene gegen unbefugte Zugriffe. In Kombination mit Public-Key-Authentifizierung und einer Firewall kann dies die Sicherheit deines Ubuntu Servers erheblich verbessern.