Ein Schlüsselpaar ist deutlich sicherer als ein Passwort: Der private Schlüssel verlässt Ihren PC nie und lässt sich von Bots, die Port 22 scannen, nicht erraten. Windows 10 und 11 enthalten bereits OpenSSH. Sie erstellen also einen Schlüssel, installieren ihn auf Ihrem VPS Linux Infrawire, halten ihn im ssh-agent-Dienst von Windows geladen und schalten zuletzt die Passwort-Anmeldung ab.
📋 Voraussetzungen
- Windows 10 oder 11 mit dem OpenSSH-Client (prüfen mit
ssh -Vin PowerShell). - Ein Linux-VPS (Ubuntu 24.04, Debian 12, AlmaLinux 9 oder Rocky 9), auf den Sie sich noch per Passwort anmelden können: In Ihrem Kundenbereich finden Sie die IP und das Root-Passwort des VPS.
- Etwa zehn Minuten und eine zweite SSH-Sitzung oder die VPS-Konsole als Sicherheitsnetz.
PowerShellssh -V
🔐 ed25519-Schlüssel erzeugen
Öffnen Sie PowerShell (normal, nicht als Administrator) und führen Sie aus:
PowerShellssh-keygen -t ed25519 -C 'USER@my-pc'
Bestätigen Sie den Standardpfad C:\Users\USER\.ssh\id_ed25519 und vergeben Sie eine Passphrase. Sie verschlüsselt den privaten Schlüssel auf der Platte, eine gestohlene Datei ist damit wertlos. Es entstehen zwei Dateien: id_ed25519 (privat, niemals weitergeben) und id_ed25519.pub (öffentlich).
📤 Öffentlichen Schlüssel auf den VPS kopieren
Windows hat kein ssh-copy-id, daher installieren Sie den Schlüssel von Hand. Zeigen Sie zuerst den öffentlichen Schlüssel an und kopieren Sie die ganze Zeile:
PowerShellGet-Content $env:USERPROFILE\.ssh\id_ed25519.pub
Melden Sie sich mit dem Passwort an und hängen Sie die Zeile auf dem Server an (ersetzen Sie den Platzhalter zwischen den einfachen Anführungszeichen durch Ihren echten Schlüssel):
Bashssh root@VPS_IP mkdir -p ~/.ssh && chmod 700 ~/.ssh echo 'ssh-ed25519 AAAA...your-key... USER@my-pc' >> ~/.ssh/authorized_keys sed -i 's/\r$//' ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
Die sed-Zeile entfernt Windows-Zeilenenden, die den Schlüssel unlesbar machen würden. Verwenden Sie dafür keine PowerShell-Pipes an ssh: Windows PowerShell 5.1 kann den Daten Wagenrückläufe hinzufügen.
🧰 ssh-agent unter Windows aktivieren
Ohne Agent müssen Sie bei jeder Anmeldung die Passphrase eingeben. Der Dienst ssh-agent ist installiert, standardmäßig aber deaktiviert oder auf manuellem Start. In einer PowerShell mit Administratorrechten:
PowerShellGet-Service ssh-agent | Set-Service -StartupType Automatic Start-Service ssh-agent Get-Service ssh-agent
Laden Sie danach in einer normalen PowerShell Ihren Schlüssel einmalig und listen Sie die geladenen Schlüssel auf:
PowerShellssh-add $env:USERPROFILE\.ssh\id_ed25519 ssh-add -l
Der Agent behält den Schlüssel auch nach Neustarts, Sie werden nicht erneut gefragt.
✅ Schlüssel-Anmeldung testen
Verbinden Sie sich erneut. Sie sollten eine Shell erhalten, ohne dass der Server das Root-Passwort verlangt:
PowerShellssh root@VPS_IP
Um genau zu sehen, welche Methode verwendet wird, fügen Sie -v hinzu und suchen nach Server accepts key und Authenticated to ... using publickey:
PowerShellssh -v root@VPS_IP
Machen Sie erst weiter, wenn das funktioniert, und lassen Sie diese Sitzung geöffnet.
🚫 Passwort-Authentifizierung auf dem Server abschalten
Unter Ubuntu und Debian enthält /etc/ssh/sshd_config.d/ mitunter schon eine Datei (etwa 50-cloud-init.conf), die Passwörter erlaubt. SSH verwendet den zuerst gelesenen Wert, legen Sie also eine Datei an, die früher einsortiert wird. Führen Sie als root auf dem VPS aus:
Bashgrep -ri 'PasswordAuthentication' /etc/ssh/sshd_config /etc/ssh/sshd_config.d/ cat > /etc/ssh/sshd_config.d/10-keys-only.conf <<'EOF' PasswordAuthentication no KbdInteractiveAuthentication no PubkeyAuthentication yes PermitRootLogin prohibit-password EOF sshd -t && systemctl reload ssh
Unter AlmaLinux/Rocky heißt der Dienst sshd: Verwenden Sie systemctl reload sshd. Stellen Sie sicher, dass die Haupt-sshd_config weit oben die Zeile Include /etc/ssh/sshd_config.d/*.conf enthält (Standard). sshd -t gibt nichts aus, wenn die Syntax gültig ist.
Prüfen Sie in einem neuen Fenster, dass Passwörter jetzt abgelehnt werden, Ihr Schlüssel aber weiter funktioniert:
PowerShellssh -o PubkeyAuthentication=no root@VPS_IP
Die erwartete Antwort lautet Permission denied (publickey).
🛠️ Fehlerbehebung
Permission denied (publickey). Der Schlüssel steht nicht in der authorized_keys des richtigen Kontos, wurde über mehrere Zeilen eingefügt oder die Rechte stimmen nicht. Führen Sie auf dem Server chmod 700 ~/.ssh und chmod 600 ~/.ssh/authorized_keys aus und prüfen Sie, dass die Zeile mit ssh-ed25519 beginnt.
WARNING: UNPROTECTED PRIVATE KEY FILE. Andere Windows-Konten können Ihren privaten Schlüssel lesen. Beschränken Sie ihn auf Ihren Benutzer:
PowerShellicacls $env:USERPROFILE\.ssh\id_ed25519 /inheritance:r /grant:r "${env:USERNAME}:F"
Error connecting to agent: No such file or directory. Der Dienst ssh-agent läuft nicht; starten Sie ihn wie oben gezeigt.
Nach der Änderung ausgesperrt. Nutzen Sie die VPS-Konsole in Ihrem Kundenbereich, löschen Sie /etc/ssh/sshd_config.d/10-keys-only.conf, führen Sie sshd -t aus und laden Sie den SSH-Dienst neu.
🚀 Ihr Windows-PC meldet sich jetzt mit einem ed25519-Schlüssel am VPS an, Passwörter sind abgeschaltet. Bewahren Sie eine Sicherung Ihres privaten Schlüssels an einem sicheren Ort auf.