
Soy un usuario feliz rsync -e ssh
y 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 ~/folder
está activado hostB
, pero hostB
no 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 hostB
puedo ver mis archivos en ~/folder
el host remoto.
Mi pregunta ahora es, ¿cuál es el (mejor) método para usar rsync
directamente 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 hostA
sí mismo.
Respuesta1
Mira esto¿Cómo me conecto a una pc a través de otra pc usando ssh?
Creas una nueva ~/.ssh/config
entrada 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:%p
en su lugar. Se prefiere esto ya que no depende denc
Ahora puedes usarlo rsync -e ssh tunnelb:~/folder ~/folder
ya 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 ssh
con -e
algún script que contenga:
ssh hostA 'ssh hostB' "$@"
No lo probé por lo que se elaborarían algunos detalles adicionalmente.