Multi-Hop-Rsync über SSH+Netcat schlägt sehr schnell fehl: Verbindung unerwartet geschlossen

Multi-Hop-Rsync über SSH+Netcat schlägt sehr schnell fehl: Verbindung unerwartet geschlossen

Ich möchte ein Verzeichnis von einem Server per rsync mit meinem Client verbinden. Ich kann nicht direkt auf den Server zugreifen, sondern muss über ein SSH-Gateway springen. Aus meiner '.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

sshBei interaktiven Sitzungen funktioniert es einwandfrei , schlägt aber rsyncfehl. Manchmal sofort, manchmal nach ein paar Sekunden, immer vor dem Kopieren von Dateien:

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

netcatIch nehme an, dass dieses Problem mit dem Gateway über die Maschine zusammenhängt gw. Wie kann ich rsync richtig verwenden, wenn ich eine Multi-Hop-Verbindung verwenden muss?

Ich verwende Netcat, weil mein Kollege mir diese Konfigurationsdatei gegeben hat und sie für normales SSH funktioniert.

Beachten Sie, dass im Gegensatz zur Situation indiese Frage, bei mir tritt das gleiche Problem auf, wenn ich rsync -avdurch ersetze scp -pr(und ich benötige rsyncdie Fähigkeit, ordnungsgemäß zu synchronisieren).

Antwort1

Ich könnte es zum Laufen bringen, indem ich es ersetze

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

mit

ProxyCommand nohup ssh gw -W %h:%p

das funktioniert für modernes OpenSSH. Jetzt bekomme ich kein sofortiges Timeout.

verwandte Informationen