Der einfachste Weg ist es, es einfach über scp zu kopieren. Außerdem funktioniert diese Syntax im Gegensatz zu einigen anderen Vorschlägen.
Sie können diese Syntax zur Vereinfachung nicht übertreffen. Sie können rekursiv kopieren, rsyncen oder was immer Sie möchten, ohne die Mühe zu haben, potenziell komplexe Pipes in Betracht zu ziehen. Diese Syntax ist intuitiv klar, wird von den Sys-Admins, die Ihnen folgen, leichter unterstützt und macht keinen nutzlosen Gebrauch von cat .
scp -3 devappserver:/path/to/copy/from qaappserver:/path/to/copy/to
Von der scp-Manpage : -3
Kopien zwischen zwei Remote-Hosts werden über den lokalen Host übertragen. Ohne diese Option werden die Daten direkt zwischen den beiden Remote-Hosts kopiert. Beachten Sie, dass diese Option die Fortschrittsanzeige deaktiviert.
Im folgenden Beispiel
- Ihre Workstation heißt MacBook-Pro.
- Dev Jump Box heißt devjumpserver
- Dev Application Server heißt devapplicationserver
- Ist in der LAN-DNS-Zone mit dem Namen .local
- QA Jump Box heißt qajumpserver
- QA Application Server heißt qaapplicationserver
- Befindet sich in der LAN-DNZ-Zone mit dem Namen .local
- Wir führen eine Testkopie einer 670 GB / etc / hosts-Datei durch ;-)
- Es wird davon ausgegangen, dass Sie die SSH-Authentifizierung mit öffentlichem Schlüssel konfiguriert haben.
Hier ist eine ~ / .ssh / config-Datei, die den direkten Zugriff von Ihrer Workstation auf die Anwendungsserver über den entsprechenden Sprung (auch als Bastionserver bezeichnet) einrichtet.
MacBook-Pro: ~ barrychapman $ cat ~ / .ssh / config
Gastgeber *
ServerAliveInterval 60
Host devapplicationsever
Hostname devapplicationserver.local
ProxyCommand ssh -i ~ / .ssh / id_rsa barrychapman@devjumpserver.example.com -W% h:% p
Benutzer barrychapman
Host qaapplicationserver
Hostname qaapplicationserver.local
ProxyCommand ssh -i ~ / .ssh / id_rsa barrychapman@qajumpserver.example.com -W% h:% p
Benutzer barrychapman
MacBook-Pro: ~ barrychapman $
Beim Testen auf das Vorhandensein einer Datei auf dem Zielserver wird diese nicht angezeigt.
MacBook-Pro: ~ barrychapman $ ssh qaapplicationserver ls / tmp / hosts
ls: kann nicht auf / tmp / hosts zugreifen: Keine solche Datei oder kein solches Verzeichnis
Durch Signal 1 getötet.
MacBook-Pro: ~ barrychapman $
Jetzt kopieren wir eine Datei vom Dev Application Server über Ihre Workstation in die QA Application.
MacBook-Pro: ~ barrychapman $ scp -3 devapplicationserver: / etc / hosts qaapplicationserver: / tmp /
Durch Signal 1 getötet.
Durch Signal 1 getötet.
MacBook-Pro: ~ barrychapman $
Überprüfen wir nun, ob die kopierte Datei auf dem QA Application Server vorhanden ist. Diesmal wird es da sein.
MacBook-Pro: ~ barrychapman $ ssh qaapplicationserver ls / tmp / hosts
/ tmp / hosts
Durch Signal 1 getötet.
MacBook-Pro: ~ barrychapman $
Hinweis
Wenn Sie eine ProxyCommand-Verbindung beenden, wird die Warnmeldung "Abgebrochen durch Signal 1" angezeigt. Dies bedeutet, dass SSH die ProxyCommand-Verbindung abbricht und kein Grund zur Beunruhigung besteht. Sie können es entfernen, indem Sie es LogLevel Quiet
zu Ihrer Zeilengruppe "bastion host config" hinzufügen .