Verknüpfen Sie mehrere SSH-Befehle, verzögern Sie jedoch die DNS-Suche, bis sie auf dem Remote-Host erfolgt

Verknüpfen Sie mehrere SSH-Befehle, verzögern Sie jedoch die DNS-Suche, bis sie auf dem Remote-Host erfolgt

Ich kann von zu Hause aus server Aüber einen mit dem Internet verbundenen SSH-Server eine Verbindung zu einem Server bei der Arbeit () herstellen.

Ich muss einen Befehl auf einem Server in einem anderen Büro ( server C) ausführen, auf den von nicht direkt zugegriffen werden kann server A.

Es gibt jedoch einen Zwischenserver ( server B), der server Azugreifen kann und von dem aus server Cerreichbar ist.

+------+   +----------+   +----------+   +----------+
| home |---| server A |---| server B |---| server C |
+------+   +----------+   +----------+   +----------+

Ich weiß, dass ich mit SSH einen Befehl auf einem Remote-Server wie folgt ausführen kann:

ssh hostname command

Daher habe ich versucht, mehrere SSH-Befehle aneinanderzureihen

ssh server_A ssh server_B ssh server_C command

Ich erhalte jedoch eine Fehlermeldung:

ssh: Could not resolve hostname server_B: Name or service not known

Dies scheint darauf hinzudeuten, dass die DNS-Suche lokal und nicht auf dem Remote-Server erfolgt.

Notiz:

Ich habe versucht, mehrere SSH-Befehle über Hosts aneinanderzureihen, die mein lokaler DNS-Server auflösen kann. Das hat funktioniert. Das heißt, wenn ich mein DNS-Lookup-Problem lösen kann, sollte ich in der Lage sein, mein Ziel zu erreichen.

Frage:

Wie kann ich mehrere SSH-Befehle aneinanderreihen und gleichzeitig erzwingen, dass die Namenssuche nur auf dem Remote-Server erfolgt, auf dem der nächste Befehl ausgeführt werden soll?

Antwort1

Soweit ich das beurteilen kann, erfolgt die Namensauflösung auf der Fernbedienung:

  • Richten Sie mein lokales Netzwerk so ein, /etc/hostsdass einem meiner Server in der Cloud ein Name zugewiesen wird
  • ping serverpingt den Server an, damit die lokale DNS-Auflösung funktioniert
  • ssh server ping serversagtping: unknown host server
  • ssh server ssh serversagtssh: Could not resolve hostname server: Name or service not known

Die Namensauflösung der Befehle in den Zeichenfolgen erfolgt also nicht lokal. Wenn Sie die Adresse nicht abrufen können, liegt dies daran, dass der Remote-Host selbst den Namen nicht auflösen kann. Um sich selbst davon zu überzeugen, starten Sie eine SSH-Eingabeaufforderung auf ServerA und prüfen Sie, ob ServerB aufgelöst werden kann ( pingoder sonst).

verwandte Informationen