SSH-ProxyBefehl an einen Host, um einen anderen zu erreichen

SSH-ProxyBefehl an einen Host, um einen anderen zu erreichen

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 arbeiten
  • jump1.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.comFolgendes 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.comFolgendes 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

verwandte Informationen