Weblog
SSH ProxyCommand mit Jump-Host automatisieren
16.05.2026 2 Min. Lesezeit
Eine wenig bekannte, aber sehr praktische Funktion von SSH ist ProxyCommand. Damit kann man Verbindungen über einen sogenannten Jump-Host bzw. Bastion-Host aufbauen.
Das wird häufig benötigt:
- aufgrund von Firewall-Regeln,
- aus Sicherheitsgründen,
- oder zur Einhaltung von Unternehmensrichtlinien.
Das Problem dabei:
Man muss sich normalerweise merken, wann man sich zuerst auf den Jump-Host verbinden muss und wann nicht.
Das lässt sich automatisieren.
Einfaches Beispiel
In diesem Beispiel heißt der Jump-Host jumphost und der geschützte Zielserver securehost.
Füge folgenden Eintrag in deine Datei ~/.ssh/config ein:
Host securehost
ProxyCommand ssh jumphost exec nc %h %p 2>/dev/null
Danach reicht ein einfaches:
ssh securehost
SSH verbindet sich automatisch zuerst mit dem Jump-Host und leitet die Verbindung anschließend zum Zielsystem weiter.
Mehrere Hosts über eine Domain-Regel
Falls sich die geschützten Systeme beispielsweise über eine bestimmte Domain erkennen lassen, kann man auch Wildcards verwenden:
Host *.secure.example.org
ProxyCommand ssh jumphost exec nc %h %p 2>/dev/null
Damit werden alle Hosts innerhalb dieser Domain automatisch über den Jump-Host erreicht.
Alle Verbindungen über den Jump-Host leiten
Falls alle SSH-Verbindungen grundsätzlich über den Jump-Host laufen sollen:
Host *
ProxyCommand ssh jumphost exec nc %h %p 2>/dev/null
Ausnahme für den Jump-Host selbst
Problematisch wird es, wenn man sich direkt auf dem Jump-Host anmelden möchte. Dann würde SSH versuchen, die Verbindung erneut über denselben Host aufzubauen.
Die Lösung:
Host jumphost
ProxyCommand none
Host *
ProxyCommand ssh jumphost exec nc %h %p 2>/dev/null
Dadurch werden alle Hosts über den Jump-Host verbunden — außer der Jump-Host selbst.
Hinweis zu ControlMaster
Die Verwendung von ControlMaster zusammen mit ProxyCommand ist nicht empfehlenswert.
Der Grund:
Dabei würden mehrere SSH-Verbindungen über denselben Kanal zu unterschiedlichen Zielsystemen laufen, wodurch ControlMaster kaum noch Vorteile bietet und unter Umständen Probleme verursachen kann.