Deutsch

SSH-Schlüssel unter Windows: ed25519 mit OpenSSH

3 min
VPS/VDS-Hosting

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 -V in 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.
PowerShell
ssh -V

🔐 ed25519-Schlüssel erzeugen

Öffnen Sie PowerShell (normal, nicht als Administrator) und führen Sie aus:

PowerShell
ssh-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:

PowerShell
Get-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):

Bash
ssh 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:

PowerShell
Get-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:

PowerShell
ssh-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:

PowerShell
ssh 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:

PowerShell
ssh -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:

Bash
grep -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:

PowerShell
ssh -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:

PowerShell
icacls $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.

Bleiben Sie über die neuesten Angebote, Rabatte und Sonderaktionen informiert.

Aktionen ansehen

Wir verwenden Cookies

Wir verwenden Analyse-Cookies, um Ihre Erfahrung auf unserer Website zu verbessern. Es werden keine Daten an Dritte verkauft. Mehr erfahren Sie in unserer Datenschutzerklärung.