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.

Themen Technikzeug
Schlagworte Linux SSH
π