
In unserer ENV haben wir 2 Jumphost-Server, bei denen wir versuchen, uns anzumelden und den SSH-Befehl auf dem Remote-Server auszuführen. Wir haben für jeden Standort eine SSH/Config-Datei, mit deren Hilfe wir per SSH-Proxy auf den Jump2-Server gelangen. Wir möchten die Konfigurationsdatei zusammenführen, damit wir gleichzeitig auf alle Standortserver zugreifen können.
Siehe unten ENV
Laptop -------->
Jumphost1 --------->
Jumphost2 --------->
Remote-Server
Eigentlich planen wir, ein Skript von meinem lokalen Rechner aus auszuführen und die Ausgabe lokal zu speichern. Um diese Aufgabe zu archivieren, müssen wir also per SSH auf 2 Jumphosts zugreifen und den folgenden Befehl auf dem Remote-Server ausführen, der das Skript vom lokalen Rechner aus ausführt und die Ausgabe auf dem lokalen Rechner selbst abruft.
Jump1 ist über Port 2222 erreichbar. Der Benutzer ist derselbe Benutzer
aber um auf den Remote-Server zuzugreifen, gibt es einen anderen Benutzer1
ssh user1@ip < ./script >> datei.txt &&
Legen Sie Ihre ~/.ssh/config fest:
Host Jump1 Benutzer jump1user Port 2222 Host Jump2 ProxyCommand ssh -W %h:%p Jump1 Benutzer jump2user Host RemoveServer ProxyCommand ssh -W %h:%p Jump2 Benutzer remoteUser
Mit der obigen Datei können wir uns problemlos direkt beim Jump2-Server anmelden. Allerdings müssen wir die Konfigurationsdatei jedes Mal für jeden Standort ändern.
Um den folgenden Beispiel-SSH-Befehl in einem Skript zum Sammeln von Informationen aus jeder Region auszuführen, benötigen wir eine einzelne Konfigurationsdatei.
Beispiel
ssh jump2 | ssh user1@remoteserver-ip < ./script >> file.txt &&
Antwort1
Ich hoffe, dieses Beispiel ermöglicht es Ihnen, nur eine Datei zu verwenden:
Host *
User username
IdentityFile /home/username/.ssh/identity
Host some*
ProxyCommand /usr/bin/ssh -p 2222 username@jumphost /usr/bin/nc %h %p 2> /dev/null
Host other*
ProxyCommand /usr/bin/ssh -p 2222 username@otherjumphost /usr/bin/nc %h %p 2> /dev/null
Host something
HostName 1.2.3.4
Host somethingelse
HostName 2.3.4.5
Host otherthing
HostName 3.4.5.6
Antwort2
Host remotehost
ProxyCommand /usr/bin/ssh -p 2222 username@jumphost /usr/bin/nc %h %p 2> /dev/null
Da der Jumphost wie von Ihnen beschrieben nur über Port 2222 erreichbar ist, müssen Sie dies der Proxy-SSH-Verbindung mitteilen.
Wie eine weitere Bearbeitung der Frage klarstellte, gibt es tatsächlichzweiHosts, über die Sie den Proxy verwenden, wird dies etwas komplexer, aber nur geringfügig. Gegeben:
local.example.com
- Der Host, auf dem Sie direkt arbeitenjump1.example.com
- Der Host, mit dem Sie sich direkt verbindenlocal
jump2.example.com
- Der Host, mit dem Sie sich direkt verbindenjump1
endpoint.example.com
- Der Host, mit dem Sie sich letztendlich verbinden
Fügen Sie unter local.example.com
Folgendes zu Ihrer SSH-Konfiguration hinzu:
host endpoint.example.com
ProxyCommand /usr/bin/ssh -p 2222 [email protected] /usr/bin/nc %h %p 2> /dev/null
Fügen Sie unter jump1.example.com
Folgendes zu Ihrer SSH-Konfiguration hinzu:
host endpoint.example.com
ProxyCommand /user/bin/ssh -p 2222 [email protected] /usr/bin/nc %h %p 2> /dev/null
Sie können nun über beide Proxys darauf zugreifen.ssh [email protected]
local.example.com