Jeder Linux-Server mit öffentlicher IP-Adresse wird innerhalb weniger Minuten nach der Bereitstellung von automatisierten Programmen angegriffen, die Passwörter für SSH erraten wollen. Mit wenigen Maßnahmen machen Sie diese Angriffe wirkungslos. Diese Anleitung zeigt, wie Sie die Anmeldung per SSH-Schlüssel einrichten, Passwörter abschalten und den Root-Zugang einschränken.

Schritt 1: SSH-Schlüssel auf Ihrem Computer erzeugen

Unter Windows 10/11, macOS und Linux ist OpenSSH bereits vorhanden. Öffnen Sie ein Terminal bzw. eine PowerShell und erzeugen Sie einen Schlüssel:

ssh-keygen -t ed25519 -C "ihr-name@laptop"

Bestätigen Sie den Speicherort und vergeben Sie eine Passphrase. Sie schützt den Schlüssel, falls jemand Ihre Datei kopiert. Es entstehen zwei Dateien:

  • id_ed25519: der private Schlüssel. Er verlässt Ihren Computer nie.
  • id_ed25519.pub: der öffentliche Schlüssel, den Sie auf dem Server hinterlegen.

Schritt 2: Eigenen Benutzer anlegen

Arbeiten Sie nicht dauerhaft als root. Legen Sie einen eigenen Benutzer mit sudo-Rechten an:

adduser ahadmin
usermod -aG sudo ahadmin

Auf RHEL-basierten Systemen heißt die Gruppe wheel statt sudo.

Schritt 3: Öffentlichen Schlüssel auf den Server kopieren

Unter macOS und Linux:

ssh-copy-id ahadmin@IHRE-SERVER-IP

Unter Windows (PowerShell), wo ssh-copy-id fehlt:

type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh ahadmin@IHRE-SERVER-IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Testen Sie die Anmeldung. Sie sollten nur noch nach der Passphrase Ihres Schlüssels gefragt werden, nicht mehr nach dem Passwort des Benutzers:

ssh ahadmin@IHRE-SERVER-IP

Alpenhost-vServer: Den öffentlichen Schlüssel können Sie auch direkt im Kundencenter an Ihrem vServer hinterlegen. Er wird dann beim nächsten Neustart automatisch eingetragen. Wie das geht, zeigt der Artikel So erstellen und hinterlegen Sie einen SSH-Key für Ihren vServer bei Alpenhost.

Schritt 4: SSH-Konfiguration härten

Wichtig: Lassen Sie die aktuelle Sitzung offen und testen Sie jede Änderung in einem zweiten Terminal. So können Sie Fehler korrigieren, ohne sich auszusperren.

Moderne Distributionen lesen zusätzliche Einstellungen aus dem Verzeichnis /etc/ssh/sshd_config.d/. Legen Sie dort eine eigene Datei an:

sudo tee /etc/ssh/sshd_config.d/10-haertung.conf > /dev/null <<'EOF'
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
MaxAuthTries 3
LoginGraceTime 30
X11Forwarding no
AllowUsers ahadmin
EOF

Die Einstellungen im Überblick:

  • PasswordAuthentication no: Anmeldung nur noch mit Schlüssel. Das wirkt gegen alle Passwort-Rateangriffe.
  • PermitRootLogin no: Root kann sich nicht direkt anmelden. Benötigen Sie Root-Zugang mit Schlüssel, etwa für Backup-Skripte, verwenden Sie prohibit-password.
  • AllowUsers: Nur die genannten Benutzer dürfen sich anmelden.

Schritt 5: Konfiguration prüfen und übernehmen

sudo sshd -t
sudo systemctl reload ssh

Gibt sshd -t keine Meldung aus, ist die Konfiguration fehlerfrei. Auf RHEL-basierten Systemen heißt der Dienst sshd statt ssh.

Öffnen Sie nun ein neues Terminal und melden Sie sich an. Erst wenn das funktioniert, schließen Sie die alte Sitzung.

Prüfen Sie, ob Passwörter wirklich abgelehnt werden:

ssh -o PubkeyAuthentication=no ahadmin@IHRE-SERVER-IP

Die erwartete Antwort lautet Permission denied (publickey).

Wird die Einstellung wirklich übernommen?

Manche Cloud-Images bringen eine Datei wie 50-cloud-init.conf mit, die PasswordAuthentication yes setzt. SSH übernimmt bei doppelten Einträgen den zuerst gelesenen Wert. Da die Dateien alphabetisch gelesen werden, gewinnt unsere Datei mit dem Präfix 10-. Kontrollieren Sie die tatsächlich aktive Konfiguration:

sudo sshd -T | grep -E 'passwordauthentication|permitrootlogin'

Weitere Maßnahmen

  • Fail2ban sperrt IP-Adressen nach wiederholten Fehlversuchen automatisch. Siehe unseren Artikel Fail2ban unter Debian und Ubuntu einrichten.
  • Zugriff nur per VPN: Mit WireGuard können Sie SSH komplett vor dem Internet verstecken.
  • Firewall: Erlauben Sie SSH nur aus bekannten Netzen, wenn das möglich ist.
  • Anderer Port: Ein Port wie 2222 reduziert die Zahl der Log-Einträge, ersetzt aber keine der obigen Maßnahmen.

Bequemer verbinden mit einer SSH-Konfiguration

Legen Sie auf Ihrem Computer die Datei ~/.ssh/config an:

Host meinserver
    HostName IHRE-SERVER-IP
    User ahadmin
    IdentityFile ~/.ssh/id_ed25519

Danach genügt ssh meinserver.

Ich habe mich ausgesperrt

Über die Konsole in Ihrem Kundenbereich erreichen Sie den Server unabhängig von SSH. Melden Sie sich dort an, löschen oder korrigieren Sie die Datei /etc/ssh/sshd_config.d/10-haertung.conf und laden Sie SSH neu. Kommen Sie nicht weiter, eröffnen Sie bitte ein Ticket.

Diese Schritte empfehlen wir für jeden vServer und Dedicated Server direkt nach der Bereitstellung. Bei einem Managed Server übernehmen wir die Absicherung für Sie.

War diese Antwort hilfreich? 0 Benutzer fanden dies hilfreich (0 Stimmen)