Jump-Host vs. Bastion-Host: Was ist der Unterschied?

Ein Jump-Host ist jeder Server, über den Sie einen anderen erreichen, zum Beispiel mit ssh -J. Ein Bastion-Host ist ein Jump-Host, der nur für diese Aufgabe gebaut ist: aus dem Internet erreichbar, einziger Zugang zu einem privaten Netz, gehärtet und protokolliert. Jeder Bastion ist ein Jump-Host, aber ein Jump-Host wird erst durch Absicherung zum Bastion. Mit ProxyJump bleibt Ihre Sitzung von Ihrem Rechner bis zum Ziel verschlüsselt, und Ihre Schlüssel liegen nie auf dem Server dazwischen.

Keine Lust, für jeden privaten Server ProxyJump-Zeilen zu schreiben? In Wardterm legen Sie den Bastion einmal für eine Gruppe fest. Zeigen

Aktualisiert am . ssh -J, ProxyJump in der Konfiguration, ProxyCommand mit ssh -W, eine Kette aus zwei Sprüngen mit -J und ssh -G wurden mit OpenSSH 10.0 unter Debian 13 in Wegwerf-Containern ausgeführt: ein Client, ein Jump-Host und ein privates Ziel.

Der Unterschied in einer Tabelle

Jump-HostBastion-Host
Was der Begriff beschreibtEine Rolle: ein Server, über den Sie gehenEine Maschine, die nur für diese Rolle gebaut ist
Wo er stehtÜberall: ein Entwicklungsrechner, eine Admin-VM, ein anderer ServerAm Rand, erreichbar aus dem Internet oder aus dem Büro
Was sonst darauf läuftOft weitere DiensteNichts außer SSH
Wer sich anmelden darfJeder mit einem KontoNamentliche Benutzer, oft nur mit Weiterleitung und ohne Shell
Private ServerMeist auch auf anderen Wegen erreichbarAkzeptieren SSH nur vom Bastion
ProtokolleWas der Server eben aufbewahrtJede Verbindung protokolliert, Protokolle außerhalb der Maschine

Die Frage ist also nicht, welchen von beiden Sie wählen. Ein Bastion ist ein Jump-Host, der zur einzigen Tür gemacht und entsprechend abgesichert wurde. Weitere Namen für dasselbe sind Jump-Server, Jump-Box und SSH-Gateway.

Wie SSH durch beide hindurchgeht

Auf Ihrer Seite sieht die Verbindung in beiden Fällen gleich aus. Es gibt zwei gute Wege und einen, den Sie meiden sollten:

# ProxyJump, OpenSSH 7.3 and later
ssh -J user@bastion user@10.0.0.5

# ProxyCommand with -W, the older equivalent
ssh -o ProxyCommand="ssh -W %h:%p user@bastion" user@10.0.0.5

# Two separate logins: avoid
ssh -A user@bastion
ssh user@10.0.0.5

Bei den ersten beiden öffnet der Jump-Host nur eine TCP-Verbindung zum Ziel und reicht die Bytes weiter. Ihre SSH-Sitzung zu 10.0.0.5 ist ab Ihrem Rechner verschlüsselt, und Ihr Schlüssel wird von Ihrem Rechner aus verwendet. Beim dritten bekommen Sie eine Shell auf dem Jump-Host und starten von dort ein neues ssh. Dann liegt entweder Ihr privater Schlüssel auf dieser Maschine, oder Ihr Agent wird dorthin weitergeleitet. Jeder mit Root-Rechten auf dieser Maschine kann ihn dann nutzen.

Die Formen für die Konfigurationsdatei, mehrere Sprünge und die Optionen, die den Jump-Host nicht erreichen, finden Sie unter ProxyJump und Jump-Host mit Beispielen.

ProxyJump oder ProxyCommand?

Nehmen Sie ProxyJump, wenn der Sprung ein SSH-Server ist. Es ist kürzer, lässt sich mit Kommas verketten, und jeder Sprung ist ein normaler Host mit eigenem Benutzer, Port und Schlüssel:

ssh -J bastion-eu,admin-gw db-internal

Nehmen Sie ProxyCommand, wenn der Zugang kein reines SSH ist: ein HTTP- oder SOCKS-Proxy über nc oder das Kommandozeilenwerkzeug eines Cloud-Anbieters, das die Sitzung für Sie öffnet. ssh startet den Befehl und spricht über dessen Standardeingabe und Standardausgabe.

Die beiden Optionen konkurrieren: Es gilt die zuerst gesetzte, und ein -o auf der Kommandozeile kommt vor der Konfigurationsdatei. Welche für einen Host gilt, verrät Ihnen ssh:

ssh -G db-internal | grep -i '^proxy'
proxyjump bastion-eu,admin-gw

Was aus einem Jump-Host einen Bastion macht

  • Eine einzige Aufgabe. Ein kleiner Server mit SSH und sonst nichts: keine Datenbank, keine Website, keine Build-Werkzeuge.
  • Die einzige Tür. Private Server akzeptieren Port 22 nur von der Adresse des Bastion, per Firewall oder Sicherheitsgruppe.
  • Keine Schlüssel darauf, kein Agent Forwarding. Benutzer springen mit ProxyJump hindurch.
  • Nur Weiterleitung. Die meisten Benutzer brauchen dort keine Shell. Ein Match Group-Block mit PermitOpen begrenzt, wohin sie dürfen.
  • Starke Anmeldung. Nur Schlüssel, auf Wunsch mit einem zweiten Faktor per TOTP.
  • Protokolle an anderer Stelle. Verbindungsprotokolle verlassen die Maschine, damit ein Eindringling sie nicht löschen kann.
  • Oft aktualisiert. Er steht im Internet, also spielen sich Sicherheitsupdates automatisch ein.

Die vollständige sshd-Konfiguration mit den Befehlen, um Abgelehntes zu testen, steht in einen SSH-Bastion-Host einrichten.

Brauchen Sie noch einen Bastion?

Ein Bastion löst genau ein Problem: Menschen über einen einzigen, überwachten Zugang zu privaten Servern zu lassen. Andere Werkzeuge lösen dasselbe Problem auf andere Weise:

  • Ein VPN oder ein privates Overlay-Netz holt Ihren Rechner ins private Netz, und Sie verbinden sich direkt mit den Servern.
  • Der Sitzungsdienst eines Cloud-Anbieters öffnet eine Shell oder einen Tunnel über die API des Anbieters, ganz ohne offenen SSH-Port.
  • Ein identitätsbasierter Zugriffs-Proxy prüft bei jeder Verbindung, wer Sie sind, und zeichnet Sitzungen zentral auf.

Jedes davon verlegt die einzige Tür an einen anderen Ort. Der Bastion bleibt die einfachste Wahl, wenn Sie reines OpenSSH wollen, ohne Agent auf den Servern und ohne zusätzlichen Dienst, den Sie betreiben müssen.

Fragen

Sind Jump-Server und Bastion-Host dasselbe?

Im Alltag meistens ja, und Jump-Box meint dasselbe. Genau genommen beschreibt Jump-Server oder Jump-Host die Rolle, also das Durchreichen, während Bastion eine gehärtete Maschine am Rand des Netzes bezeichnet, die nur diese Aufgabe hat.

Kann der Bastion meine SSH-Sitzung mitlesen?

Nicht mit ProxyJump oder ProxyCommand ssh -W. Er leitet nur den verschlüsselten Datenstrom weiter und sieht, wer sich wann zu welcher Adresse und welchem Port verbunden hat. Alles mitlesen kann er nur, wenn Sie dort eine Shell öffnen und von da aus erneut ssh starten.

Sollte ich Agent Forwarding über einen Bastion nutzen?

Nein. Nutzen Sie ProxyJump. Mit ssh -A zum Bastion kann jeder mit Root-Rechten dort Ihre Schlüssel verwenden, solange Sie verbunden sind. Siehe Risiken von Agent Forwarding.

Brauche ich mit einem VPN noch einen Bastion?

Nicht immer. Ein VPN oder ein privates Overlay-Netz kann ihn als Zugang ersetzen. Viele Teams behalten trotzdem einen Bastion als einzigen SSH-Zugang, weil sich eine einzelne Maschine leicht überwachen, protokollieren und sperren lässt.

Quellen

Mehr zu Tunnel und Jump-Hosts

Alle Anleitungen