многоадресная rsync через ssh+netcat очень быстро дает сбой: соединение неожиданно закрывается

многоадресная rsync через ssh+netcat очень быстро дает сбой: соединение неожиданно закрывается

Я хочу rsync каталога с сервера на мой клиент. Я не могу получить доступ к серверу напрямую, но мне нужно перейти через шлюз ssh. Из моего '.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

Это работает нормально для интерактивных sshсеансов, но rsyncне работает. Иногда сразу, иногда через несколько секунд, всегда перед копированием файлов:

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

Я предполагаю, что эта проблема связана с netcatшлюзом через машину gw. Как мне правильно использовать rsync, когда мне нужно использовать многоадресное соединение?

Я использую netcat, потому что мой коллега дал мне этот файл конфигурации, и он работает для обычного ssh.

Обратите внимание, что в отличие от ситуации вэтот вопрос, я сталкиваюсь с той же проблемой, когда заменяю rsync -avна scp -pr(и мне действительно нужна rsyncвозможность правильной синхронизации).

решение1

Я мог бы заставить его работать, заменив

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

с

ProxyCommand nohup ssh gw -W %h:%p

который работает для современного OpenSSH. Теперь я не получаю немедленного тайм-аута.

Связанный контент