También puede hacer esto a la inversa y tal vez sea más fácil.
Supongamos que tiene una sesión ssh abierta con la máquina a la que desea enviar el archivo. Esta PC de salto más lejano, la llamaremos hop2. Su host "proxy" será hop1. La PC que es de origen de archivo, llamaremos a ese origen.
origin:~/asdf.txt --> hop1 --> hop2:~/asdf.txt
Puede construir túneles haciendo que un puerto local esté disponible en una PC remota. De este modo, estamos definiendo un puerto para abrir en la PC remota, que será una redirección al puerto que detuvo con usted cuando construyó el túnel.
En 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
Ahora en esa sesión de túnel abierta, puede hacer lo mismo desde hop1 hasta file_origin.
En 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.
Ahora está canalizado de hop2 a hop1 al origen. Casualmente, ahora tanto el puerto 5555 como el 6666 están abiertos en origen, que son redireccionamientos al puerto 22 de hop2. Dentro de esta sesión, las dos siguientes son rutas scp válidas para hop2:
En origen:
scp -P 6666 ~/asdf.txt <hop2_user>@<127.0.0.1>:~/asdf.txt
De esta manera, puede tener un número arbitrario de saltos en el medio, y es más fácil trabajar en términos de encadenar más de dos saltos.