Cómo usar rsync con un host remoto remoto

Cómo usar rsync con un host remoto remoto

Soy un usuario feliz rsync -e sshy lo uso para sincronizar datos entre mi máquina y un host remoto usando

rsync -avz -e ssh me@hostA:~/folder ~/folder

Y esto hizo lo que necesitaba hasta ahora.

Ahora estoy trabajando con una configuración donde el acceso es un poco más complicado. Supongamos que ahora ~/folderestá activado hostB, pero hostBno es accesible directamente desde mi máquina, sino sólo indirectamente a través de hostA.

Entonces, si solo quiero ver la carpeta en hostB. Primero necesito hacer ssh a hostA, luego hostBpuedo ver mis archivos en ~/folderel host remoto.

Mi pregunta ahora es, ¿cuál es el (mejor) método para usar rsyncdirectamente entre mi máquina y hostB?

Desafortunadamente esta es la configuración con la que necesito trabajar. Supongamos que no hay posibilidad de almacenar temporalmente los datos sobre hostAsí mismo.

Respuesta1

Mira esto¿Cómo me conecto a una pc a través de otra pc usando ssh?

Creas una nueva ~/.ssh/configentrada con el nombre Tunnelb:

Host tunnelb
HostName hostB
User user
ProxyCommand ssh user@hostA nc %h %p

Si tienes una versión reciente de ssh, puedes usarla Proxycommand ssh user@hostA -W %h:%pen su lugar. Se prefiere esto ya que no depende denc

Ahora puedes usarlo rsync -e ssh tunnelb:~/folder ~/folderya que usará la entrada definida en ~/.ssh/config.

Respuesta2

Variante 1:

Primero, inicie ssh en el hostA de forma permanente con el reenvío de puerto local en otra terminal. P.ej:

ssh -N -v -L 22022:hostB:22 hostA

Luego, "alimente" rsync con ssh a localhost:22022. Una variante es escribir en ~/.ssh/config:

Host hostB
HostName localhost
Port 22022

Variante 2:

Reemplace -e sshcon -ealgún script que contenga:

ssh hostA 'ssh hostB' "$@"

No lo probé por lo que se elaborarían algunos detalles adicionalmente.

información relacionada