Die ProxyCommand-Antwort von Grawity hat bei mir funktioniert, aber da ich mit SSH weniger vertraut bin, waren einige Experimente erforderlich. Ich dachte, ich würde Grawitys Antwort nur ausführlicher formulieren, um anderen Neulingen wie mir bei SSH zu helfen. Hier sind die Definitionen für eine explizitere Notation:
Maschine A: Die Maschine, auf der Sie sich befinden
Server B: userB@ip.address.for.B (der Sprunghost oder der mittlere Server)
Server C: userC@ip.address.for.C (der Remote-Server, auf den Sie kopieren möchten)
ProxyCommnad
A$ scp -oProxyCommand="ssh -W %h:%p userB@ip.address.for.B" thefile userC@ip.address.for.C:destination
Konkretes Beispiel
Nehmen wir als konkretes Beispiel an, Sie haben Zugriff auf einen Server mit IP 0.0.1.2
mit einem Benutzerkonto mit dem Namen bar
(Server C). Dazu müssen Sie sich jedoch zuerst bei einem Server mit der IP-Adresse 0.0.1.1
mit dem Benutzerkonto foo
(Server B) anmelden . Jetzt wollen Sie Datei kopieren , baz.txt
auf dem aktuellen Maschine (Machine A) zu Server befindet 0.0.1.2
‚s - /home/bar/
Verzeichnis. Um den obigen ProxyCommand für dieses Beispiel zu verwenden, führen Sie Folgendes aus:
A$ scp -oProxyCommand="ssh -W %h:%p foo@0.0.1.1" baz.txt bar@0.0.1.2:/home/bar/
Sie können eine Datei auch genauso einfach von Server C kopieren, indem Sie die Reihenfolge der Datei und des Ziels ändern. Wenn Sie sich zum Beispiel baz.txt
bereits auf dem Server 0.0.1.2
befunden haben, können /home/bar/
Sie ihn auf Ihren Computer kopieren, indem Sie Folgendes verwenden:
A$ scp -oProxyCommand="ssh -W %h:%p foo@0.0.1.1" bar@0.0.1.2:/home/bar/baz.txt /destination/path/on/A
Hoffe, dies hilft Menschen, die Dinge brauchen, die für sie ein bisschen mehr als andere formuliert sind.
A$ rsync <options> -e 'ssh B ssh' source C:destination