La respuesta de ProxyCommand de Grawity funcionó para mí, pero como estoy menos familiarizado con SSH, me llevó un poco de experimentación. Pensé que simplemente explicaría la respuesta de Grawity con más detalle para ayudar a cualquier otro novato a SSH como yo. Aquí están las definiciones para una notación más explícita:
Máquina A: la máquina en la que estás
Servidor B: userB@ip.address.for.B (el servidor principal o el servidor intermedio)
Servidor C: userC@ip.address.for.C (el servidor remoto al que desea copiar)
ProxyCommnad
A$ scp -oProxyCommand="ssh -W %h:%p userB@ip.address.for.B" thefile userC@ip.address.for.C:destination
Ejemplo concreto
Entonces, para un ejemplo concreto, supongamos que tiene acceso a un servidor con IP 0.0.1.2con una cuenta de usuario llamada bar(Servidor C). Pero para llegar a él, primero debe iniciar sesión en un servidor con IP 0.0.1.1con una cuenta de usuario llamada foo(Servidor B). Ahora desea copiar el archivo baz.txtubicado en su equipo actual (la máquina A) al servidor 0.0.1.2's /home/bar/directorio. Para usar el ProxyCommand anterior para este ejemplo, debe ejecutar lo siguiente:
A$ scp -oProxyCommand="ssh -W %h:%p foo@0.0.1.1" baz.txt bar@0.0.1.2:/home/bar/
También puede copiar fácilmente un archivo desde el Servidor C cambiando el orden del archivo y el destino. Entonces, por ejemplo, si baz.txtya estaba en el servidor 0.0.1.2ubicado en, /home/bar/entonces podría copiarlo a su máquina usando:
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
Espero que esto ayude a las personas que necesitan explicarse un poco más que otros.
A$ rsync <options> -e 'ssh B ssh' source C:destination