rsync de múltiples saltos a través de ssh+netcat falla muy rápidamente: la conexión se cerró inesperadamente

rsync de múltiples saltos a través de ssh+netcat falla muy rápidamente: la conexión se cerró inesperadamente

Quiero sincronizar un directorio desde un servidor a mi cliente. No puedo acceder al servidor directamente, pero necesito pasar por una puerta de enlace ssh. Desde mi '.ssh/config':

Host gw
    User ab123456
    HostName gw.somewhere.ac.uk
    IdentityFile ~/.ssh/id_dsa.pub
    ServerAliveInterval 60

Host remote
    User me
    HostName remote.somewhere.ac.uk
    IdentityFile ~/.ssh/id_dsa.pub
    ProxyCommand nohup ssh gw netcat -w1 %h %p
    ServerAliveInterval 60

Funciona bien para sshsesiones interactivas, pero rsyncfalla. A veces inmediatamente, a veces después de unos segundos, siempre antes de copiar cualquier archivo:

$ rsync -av remote:/path/to/somewhere/ somewhere/
nohup: redirecting stderr to stdout
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: unexplained error (code 255) at io.c(226) [Receiver=3.1.0]

$ rsync -av remote:/path/to/somewhere/ somewhere/
nohup: redirecting stderr to stdout

            Access to this system is monitored etc. etc.

receiving incremental file list
Write failed: Broken pipe
rsync: connection unexpectedly closed (12288 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [receiver=3.1.0]
rsync: connection unexpectedly closed (16336 bytes received so far) [generator]
rsync error: unexplained error (code 255) at io.c(226) [generator=3.1.0]

Supongo que este problema está relacionado con la netcatpuerta de enlace a través de la máquina gw. ¿Cómo puedo usar rsync correctamente cuando necesito usar una conexión de múltiples saltos?

Estoy usando netcat porque mi colega me dio este archivo de configuración y funciona para ssh normal.

Tenga en cuenta que, a diferencia de la situación enesta pregunta, Experimento el mismo problema cuando rsync -avlo reemplazo scp -pr(y necesito rsyncla capacidad de sincronizar correctamente).

Respuesta1

Podría hacerlo funcionar reemplazando

#ProxyCommand nohup ssh gw netcat -w1 %h %p

con

ProxyCommand nohup ssh gw -W %h:%p

que funciona para OpenSSH moderno. Ahora no obtengo un tiempo de espera inmediato.

información relacionada