Ich bin mit der Verwendung der ProxyCommand-Funktion von ssh vertraut und kann sie verwenden, um durch mehrere Bastion-Hosts zu springen und den endgültigen Host effizient zu erreichen. Aber ich kann einfach nicht verstehen, wie es im Backend tatsächlich funktioniert.
Zum Beispiel. Ich habe die folgende Konfigurationsdatei.
Host final
Hostname final.com
Port 22
AgentForwarding yes
User guestuser
ProxyCommand "ssh [email protected] -W %h:%p"
Ich verstehe, dass für die Verbindung zum Host final
der ProxyCommand ausgeführt wird, bevor die Verbindung hergestellt wird final.com
. Aber ich kann die Reihenfolge der Verbindungen immer noch nicht verstehen.
Und was macht die Option -W %h:%p
? Ich verstehe, dass es die Netcat-Funktion ist und ähnlich ist nc %h %p
.
Soweit ich das verstehe, ist hier die Abfolge der Operationen. Bitte lassen Sie mich wissen, wenn ich falsch liege. Ich werde die oben in meinem Beispiel angegebene Konfigurationsdatei verwenden.
- Der Benutzer tritt ein
ssh final
- Eine SSH-Verbindung zu bastion.com wurde erstellt.
- Ein Netcat-Tunnel wird von bastion.com zu Port 22 von final.com erstellt. Der Standard von netcat ist mit der Shell verbunden, die in der Verbindung zu bastion.com erhalten wurde.
- Jetzt haben wir eine Verbindung von unserem System zu final.com. Die erste Hälfte dieser Verbindung ist eine SSH-Verbindung von unserem System zu bastion.com. Die zweite Hälfte dieser Verbindung ist ein Netcat-Tunnel von bastion.com zu final.com.
- Der
ssh final
Befehl verwendet nun die obige Verbindung als Proxy und tunnelt ihre Daten über diese vorhandene Verbindung.
Außerdem möchte ich auch wissen, ob diese Technik auch als SSH-Stacking bezeichnet wird .
Zeilenumbrüche hinzugefügt
quelle