SSH-Key einrichten unter Windows, macOS und Linux
SSH-Schlüssel mit ssh-keygen erzeugen, auf den Server kopieren und den Passwort-Login sicher abschalten, für Windows, macOS und Linux.
Mit einem SSH-Key meldest du dich ohne Passwort an deinem Server an. Das ist bequemer und deutlich sicherer, weil Angreifer kein Passwort mehr erraten können.
1. Schlüsselpaar erzeugen
Unter Linux, macOS und Windows 10/11 (PowerShell) ist der Befehl gleich:
ssh-keygen -t ed25519 -C "mein-laptop"
Bestätige den Speicherort mit Enter und vergib eine Passphrase. Danach liegen zwei Dateien in deinem Benutzerordner unter .ssh:
id_ed25519: der private Schlüssel. Er verlässt deinen Rechner nie.id_ed25519.pub: der öffentliche Schlüssel. Der kommt auf den Server.
2. Öffentlichen Schlüssel auf den Server kopieren
Unter Linux und macOS:
ssh-copy-id root@DEINE-IP
Unter Windows gibt es kein ssh-copy-id. Nimm diesen Befehl in der PowerShell:
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh root@DEINE-IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Teste danach den Login mit ssh root@DEINE-IP. Du wirst nur noch nach der Passphrase des Schlüssels gefragt, nicht nach dem Server-Passwort.
3. Passwort-Login abschalten
Achtung: Mach das erst, wenn der Login mit Schlüssel klappt. Sonst sperrst du dich aus.
Öffne /etc/ssh/sshd_config und setze
PasswordAuthentication no
PermitRootLogin prohibit-password
Dateien in /etc/ssh/sshd_config.d/ gehen vor, denn SSH nimmt bei den meisten Einstellungen den ersten Wert, den es findet. Steht dort zum Beispiel in 50-cloud-init.conf noch PasswordAuthentication yes, änderst du es auch dort. Was wirklich gilt, zeigt:
sshd -T | grep -Ei '^(passwordauthentication|permitrootlogin)'
Richtig ist passwordauthentication no und bei permitrootlogin der Wert prohibit-password oder dessen ältere Schreibweise without-password. Dann die Konfiguration prüfen und den Dienst neu starten:
sshd -t && systemctl restart ssh
Lass die bestehende Verbindung offen und teste in einem zweiten Fenster, ob der Login noch geht. Dass Passwörter wirklich abgelehnt werden, siehst du so. Die Antwort muss Permission denied (publickey) lauten:
ssh -o PubkeyAuthentication=no root@DEINE-IP
Falls du dich ausgesperrt hast, kommst du über die Konsole im XionHosting-Panel weiterhin auf den Server. Dort kannst du auch das Root-Passwort zurücksetzen.
Weiter geht es mit Linux-Server absichern.