SCP stellt beim Kopieren von Dateien eine neue Verbindung her, was es manchmal schwierig machen kann, wenn Firewalls beteiligt sind.
Zum Beispiel,
Host-A <-> Host-B <-> Host-C <-> Host-D
- Host-A ist über SSH mit Host-B verbunden, und dann ist 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 letzter Host-D kann Stellen Sie nur eine Verbindung zu Host-C her.
Der Befehl (auf Host-D) scp / home / benutzer / datei Host-A: / home / benutzer / neue datei versucht, einen neuen SSH-Tunnel zwischen den beiden zu erstellen, was nicht das ist, was ich will. Ich möchte, dass die vorhandene SSH-Tunnelkette die Datei über die vorherigen Hosts zurückkopiert, bis sie Host-A erreicht.
Wie kann ich das machen?
linux
networking
ssh
scp
TrevorKS
quelle
quelle
Antworten:
Sie können vorhandene Verbindungen wiederverwenden. Verwenden Sie entweder die Befehlszeilenoption
-M
oder die (Client-) KonfigurationsoptionControlMaster
. Weitere Informationen finden Sie in dieser Antwort auf StackOverflow.Ich habe dies ausgiebig genutzt, kombiniert mit
ControlPersist
, um die Verbindung erst nach einer Verzögerung zu schließen. Dies vermeidet die Verbindungszeit, die Ihnen sonst entstehen würde, und verbessert die Leistung drastisch, wenn Sie die Verbindung mehrmals schließen und wiederherstellen (wie ich es bei der interaktiven Verwendung oft tue).Beachten Sie, dass dies bei der Verbindung mit einigen Hosts (z. B. GitHub) nicht sehr gut funktioniert. Daher müssen Sie möglicherweise bestimmte Hosts explizit von der Verwendung dieser Option ausschließen, wenn Sie sie als Standard festlegen.
quelle
ControlMaster
Datei für die Verbindung löschen und die Verbindung wiederherstellen.