Sie können dies auch in umgekehrter Richtung tun und es ist vielleicht einfacher.
Angenommen, Sie haben eine SSH-Sitzung mit dem Computer geöffnet, an den Sie die Datei senden möchten. Diesen am weitesten entfernten PC nennen wir hop2. Ihr "Proxy" -Host ist hop1. Den PC, von dem die Datei stammt, nennen wir diesen Ursprung.
origin:~/asdf.txt --> hop1 --> hop2:~/asdf.txt
Sie können Tunnel erstellen, um einen lokalen Port auf einem Remote-PC verfügbar zu machen. Damit definieren wir einen Port, der auf dem Remote-PC geöffnet werden soll. Dies ist eine Weiterleitung zu dem Port, den Sie beim Bau des Tunnels mitgezogen haben.
Auf Hop2:
ssh -R 5555:127.0.0.1:22 <hop1_user>@<hop1_IP>
#this has the effect of building a tunnel from hop2 to hop1, making hop2's port 22 available on hop1 as port 5555
Jetzt können Sie in dieser geöffneten Tunnelsitzung dasselbe von hop1 bis file_origin tun.
Auf Hop1:
ssh -R 6666:127.0.0.1:5555 <origin_user>@<origin_IP>
#this has the effect of building a tunnel from hop1 to origin while also pulling the active tunnel with it, making hop1's port 5555 (hop2's port 22) available on origin as port 6666.
Sie werden nun von Hop2 zu Hop1 zum Ursprung getunnelt. Zufälligerweise sind nun beide Ports 5555 und 6666 für Origin geöffnet, die zu Port 22 von hop2 umgeleitet werden. In dieser Sitzung sind beide der folgenden gültigen scp-Routen zu hop2:
Auf herkunft:
scp -P 6666 ~/asdf.txt <hop2_user>@<127.0.0.1>:~/asdf.txt
Auf diese Weise können Sie eine beliebige Anzahl von Sprüngen dazwischen haben, und es ist einfacher, mit mehr als zwei Sprüngen zu arbeiten.