Dieser Eintrag beschreibt, wie unter Windows ein SSH-Zugang über einen Bastion-Host (Jump Host) eingerichtet wird, sodass Verbindungen zu internen Systemen ohne Passwort, ausschließlich über SSH-Key-Authentifizierung, möglich sind.
Die Anleitung basiert auf folgenden Zielen:
ProxyJump~/.ssh/config für komfortable Befehle wiessh bastion ssh server1 ssh pihole
Falls noch kein Key vorhanden ist:
ssh-keygen -t ed25519 -C "windows-client"
Die Dateien werden automatisch erstellt unter:
C:\Users\<Benutzer>\.ssh\id_ed25519 C:\Users\<Benutzer>\.ssh\id_ed25519.pub
Die Passphrase kann leer bleiben, wenn keine Eingabe gewünscht ist.
Der öffentliche Schlüssel muss auf dem Bastion in:
~/.ssh/authorized_keys
hinterlegt werden.
Beispielübertragung aus PowerShell:
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh benutzer@bastion.fqdn -p <PORT> "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Wichtig:
authorized_keys darf nur dem Benutzer selbst gehörenchmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
ssh bastion
Erwartetes Verhalten:
Falls der Key nicht akzeptiert wird: prüfen, ob der richtige Public Key auf dem Bastion eingetragen wurde.
Unter Windows befindet sich die Datei hier:
C:\Users\<Benutzer>\.ssh\config
Beispielkonfiguration:
# Bastion Host Host bastion HostName bastion.example.com Port <individuelles Port> User jumpuser IdentityFile C:/Users/<Benutzer>/.ssh/id_ed25519 ServerAliveInterval 30 ServerAliveCountMax 3 # Interne Hosts werden automatisch über Bastion geroutet Host server1 HostName 192.168.100.xx User admin ProxyJump bastion IdentityFile C:/Users/<Benutzer>/.ssh/id_ed25519 Host server2 HostName 192.168.100.xx User admin ProxyJump bastion IdentityFile C:/Users/<Benutzer>/.ssh/id_ed25519
Hinweise:
/ in PfadenControlMaster unter Windows verwenden (nicht kompatibel)Durch die Config reichen nun einfache Befehle:
ssh server1 ssh pihole
Ablauf:
| Problem | Ursache | Lösung |
|---|---|---|
| Permission denied (publickey) | Public Key fehlt oder falscher User | Key erneut prüfen, in authorized_keys eintragen |
| Verbindung nutzt Port 22 statt Bastion-Port | Host-Name stimmt nicht überein | In Host-Block identischen Namen verwenden |
| „Not a socket“ / ProxyJump bricht ab | Fehlerhafte config oder Troll-Proxy | Config minimieren, Multiplexing entfernen |
| Passwort wird verlangt | Passwortauth aktiviert | Auf Bastion: PasswordAuthentication no setzen |
authorized_keys entfernen
Mit der oben beschriebenen Einrichtung ermöglicht Windows eine vollständig passwortlose SSH-Anmeldung über einen Bastion Host.
Die Nutzung der ~/.ssh/config vereinfacht die tägliche Arbeit erheblich und sorgt für sichere, wiederholbare Verbindungen — egal, ob zu extern erreichbaren Systemen oder internen Servern, die ausschließlich über den Bastion Host zugänglich sind.