SCP über eine vorhandene SSH-Kette verwenden? Möglich?

SCP über eine vorhandene SSH-Kette verwenden? Möglich?

SCP stellt beim Kopieren von Dateien eine neue Verbindung her, was manchmal zu Problemen führen kann, wenn Firewalls beteiligt sind.

Zum Beispiel,

Host-A <--> Host-B <--> Host-C <--> Host-D

  • Host-A wird über SSH mit Host-B verbunden, und dann wird Host-B über SSH mit Host-C und dann mit Host-D verbunden.
  • Host-A kann keine Verbindung zu anderen Computern als Host-B herstellen, Host-B kann nur eine Verbindung zu Host-A und Host-C herstellen, Host-C kann nur eine Verbindung zu Host-B und Host-D herstellen und Host-D kann nur eine Verbindung zu Host-C herstellen.

Der Befehl (auf Host-D)scp /home/Benutzer/Datei Host-A:/home/Benutzer/neueDateiwird versuchen, einen neuen SSH-Tunnel zwischen den beiden zu erstellen, was ich nicht möchte. Ich möchte, dass die vorhandene SSH-Tunnelkette die Datei durch die vorherigen Hosts zurückkopiert, bis sie Host-A erreicht.

Wie kann ich das machen?

Antwort1

Sie können vorhandene Verbindungen wiederverwenden. Verwenden Sie dazu entweder den Befehlszeilenschalter -Moder die (Client-)Konfigurationsoption ControlMaster. Siehediese Antwortauf StackOverflow für weitere Einzelheiten.

Ich habe dies ausgiebig genutzt, kombiniert mit ControlPersistder Option, die Verbindung erst nach einer Verzögerung zu schließen. Dadurch wird die Verbindungszeit vermieden, die sonst anfallen würde, und die Leistung wird erheblich verbessert, wenn Sie die Verbindung mehrmals schließen und wiederherstellen (wie ich es bei interaktiver Nutzung häufig tue).

Beachten Sie, dass die Verbindung zu manchen Hosts (z. B. GitHub) nicht optimal funktioniert. Daher müssen Sie möglicherweise bestimmte Hosts explizit von der Verwendung dieser Option ausschließen, wenn Sie sie als Standard festlegen.

verwandte Informationen