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
ssh
Bei interaktiven Sitzungen funktioniert es einwandfrei , schlägt aber rsync
fehl. 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]
netcat
Ich 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 -av
durch ersetze scp -pr
(und ich benötige rsync
die 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.