ssh+netcat を介したマルチホップ rsync がすぐに失敗します: 接続が予期せず閉じられました

ssh+netcat を介したマルチホップ rsync がすぐに失敗します: 接続が予期せず閉じられました

サーバーからクライアントにディレクトリを 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 では機能します。現在は即時のタイムアウトは発生しません。

関連情報