Das Konzept der Bastion-Hosts ist nichts Neues in der Computertechnik. Baston-Hosts sind in der Regel öffentlich zugängliche, gehärtete Systeme, die als Zugangspunkt zu Systemen hinter einer Firewall oder einem anderen eingeschränkten Standort dienen, und sie sind mit dem Aufkommen von Cloud Computing besonders beliebt.
Die ssh
Der Befehl bietet eine einfache Möglichkeit, Bastion-Hosts zu nutzen, um mit einem einzigen Befehl eine Verbindung zu einem Remote-Host herzustellen. Anstatt zuerst per SSH zum Bastion-Host zu gehen und dann ssh
zu verwenden auf der Bastion, um sich mit dem Remote-Host ssh
zu verbinden kann die ersten und zweiten Verbindungen mithilfe von ProxyJump
selbst erstellen .
ProxyJump
Der ProxyJump
, oder das -J
Flag, wurde in ssh
eingeführt Version 7.3. Um ihn zu verwenden, geben Sie nach dem -J
den Bastion-Host an, über den eine Verbindung hergestellt werden soll -Flag, plus den Remote-Host:
$ ssh -J <bastion-host> <remote-host>
Sie können auch bestimmte Nutzernamen und Ports festlegen, wenn sie sich zwischen den Hosts unterscheiden:
$ ssh -J user@<bastion:port> <user@remote:port>
Die ssh
Man- (oder Handbuch-)Seite (man ssh
) weist darauf hin, dass mehrere, durch Kommas getrennte Hostnamen angegeben werden können, um durch eine Reihe von Hosts zu springen:
$ ssh -J <bastion1>,<bastion2> <remote>
Diese Funktion ist nützlich, wenn es mehrere Trennungsebenen zwischen einer Bastion und dem endgültigen Remote-Host gibt. Zum Beispiel ein öffentlicher Bastion-Host, der Zugriff auf eine Gruppe von Hosts der „Webebene“ gewährt, innerhalb derer auf eine weitere geschützte Gruppe der „Datenbankebene“ zugegriffen werden kann.
Festkodierte Proxy-Hosts in ~/.ssh/config
Das -J
Flag bietet Flexibilität für die einfache Angabe von Proxy- und Remote-Hosts nach Bedarf, aber wenn ein bestimmter Bastion-Host regelmäßig verwendet wird, um eine Verbindung zu einem bestimmten Remote-Host herzustellen, wird der ProxyJump
Konfiguration kann in ~/.ssh/config
eingestellt werden um automatisch die Verbindung zur Bastion auf dem Weg zum entfernten Host herzustellen:
### The Bastion Host
Host bastion-host-nickname
HostName bastion-hostname
### The Remote Host
Host remote-host-nickname
HostName remote-hostname
ProxyJump bastion-host-nickname
Unter Verwendung der obigen Beispielkonfiguration, wenn ein ssh
Verbindung wird wie folgt hergestellt:
$ ssh remote-host-nickname
Die ssh
Der Befehl erstellt zuerst eine Verbindung zum Bastion-Host bastion-hostname
(der Host, auf den mit Spitznamen im ProxyJump
des Remote-Hosts verwiesen wird Einstellungen), bevor Sie sich mit dem Remote-Host verbinden.
Eine Alternative:Weiterleitung von stdin und stdout
ProxyJump
ist die vereinfachte Art, eine Funktion zu verwenden, die ssh
seit langem: ProxyCommand
. ProxyCommand
funktioniert durch Weiterleitung von Standardeingang (stdin) und Standardausgang (stdout) von der Remote-Maschine durch den Proxy oder Bastion-Hosts.
Der ProxyCommand
selbst ist ein spezifischer Befehl, der verwendet wird, um sich mit einem entfernten Server zu verbinden – im Fall des vorherigen Beispiels wäre das der manuelle ssh
Befehl, der verwendet wird, um sich zuerst mit der Bastion zu verbinden:
$ ssh -o ProxyCommand="ssh -W %h:%p bastion-host" remote-host
Der %h:%p
Argumente für das -W
Das obige Flag gibt an, dass Standard-Ein- und -Ausgänge an den Remote-Host weitergeleitet werden (%h
) und den Port des Remote-Hosts (%p
).
ProxyCommand
in ~/.ssh/config
Wie bei ProxyJump
, ProxyCommand
kann in ~/.ssh/config
eingestellt werden Datei für Hosts, die immer diese Konfiguration verwenden:
Host remote-host
ProxyCommand ssh bastion-host -W %h:%p
Mit dieser Einstellung in ~/.ssh/config
, jeder ssh
Die Verbindung zum entfernten Host erfolgt durch Weiterleitung von stdin und stdout über eine sichere Verbindung von bastion-host
.
Die ssh
Befehl ist ein mächtiges Werkzeug. Obwohl es meistens in seiner einfachsten Form verwendet wird, ssh user@hostname
, gibt es buchstäblich Dutzende von Verwendungsmöglichkeiten mit Flags und Konfigurationen, um Verbindungen von einem Host zum anderen herzustellen. Sehen Sie sich ssh
an 's Handbuchseite (man ssh
), um all die verschiedenen Optionen zu entdecken, die mit diesem scheinbar einfachen Programm verfügbar sind.