Vous pouvez également le faire à l’inverse et peut-être plus facilement.
Supposons qu'une session ssh soit ouverte avec la machine à laquelle vous voulez envoyer le fichier. Ce PC le plus éloigné, nous l'appellerons hop2. Votre hôte "proxy" sera hop1. Le PC qui est l’origine du fichier, nous appellerons cette origine.
origin:~/asdf.txt --> hop1 --> hop2:~/asdf.txt
Vous pouvez créer des tunnels rendant un port local disponible sur un PC distant. Nous définissons ainsi un port à ouvrir sur le PC distant, qui sera une redirection vers le port que vous avez intercepté lors de la construction du tunnel.
Sur 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
Maintenant, dans cette session de tunnel ouverte, vous pouvez faire la même chose de hop1 à file_origin.
Sur 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.
Vous êtes maintenant tunnelé de hop2 à hop1 et à l’origine. Par coïncidence, les ports 5555 et 6666 sont maintenant ouverts sur leur origine, ce qui redirige vers le port 22 de hop2. Dans cette session, les deux suivants sont des itinéraires scp valides vers hop2:
Sur l'origine:
scp -P 6666 ~/asdf.txt <hop2_user>@<127.0.0.1>:~/asdf.txt
De cette façon, vous pouvez avoir un nombre arbitraire de sauts entre les deux et il est plus facile de travailler avec une chaîne de plus de deux sauts.