rsync multi-hop através de ssh + netcat falha muito rapidamente: conexão fechada inesperadamente

rsync multi-hop através de ssh + netcat falha muito rapidamente: conexão fechada inesperadamente

Quero sincronizar novamente um diretório de um servidor para meu cliente. Não consigo acessar o servidor diretamente, mas preciso passar por um gateway ssh. Do meu '.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 bem para sshsessões interativas, mas rsyncfalha. Às vezes imediatamente, às vezes após alguns segundos, sempre antes de copiar qualquer arquivo:

$ 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]

Suponho que esse problema esteja relacionado ao netcatgateway através da máquina gw. Como posso usar o rsync corretamente quando preciso usar uma conexão multi-hop?

Estou usando o netcat porque meu colega me deu esse arquivo de configuração e funciona para ssh normal.

Observe que, diferentemente da situaçãoessa questão, tenho o mesmo problema quando substituo rsync -avpor scp -pr(e preciso rsyncda capacidade de sincronizar corretamente).

Responder1

Eu poderia fazê-lo funcionar substituindo

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

com

ProxyCommand nohup ssh gw -W %h:%p

que funciona para o OpenSSH moderno. Agora não estou recebendo um tempo limite imediato.

informação relacionada