2013-05-20 261 views
28

我想進行rsync到一個羣集節點到我通常連接穿過另一個系統:rsync的通過ssh隧道

說我首先連接到

ssh [email protected] 

並從那裏到

ssh [email protected] 

現在我想從我的工作站rsync同步到clusternode。我做到以下幾點:

和它不工作,我得到

ssh_exchange_identification: Connection closed by remote host 

爲什麼它不起作用?我需要做什麼?


我發現了很多的信息在這裏:

http://toddharris.net/blog/2005/10/23/rsyncing-through-an-ssh-tunnel/

我想明白,我的問題是橋樑和目的地之間的第二身份驗證,所以我改變方法2是也不是很優雅,但它的作品。我想嘗試的方法3,但我不知道如何配置rsync進程

+0

嘗試使用-v(或-vvv)選項ssh命令:'rsync -e「ssh -vvv -p8000」source user @ localhost:destination'啓用詳細的ssh日誌記錄,錯誤是almos總是在那裏。 – Josh

+0

您可以設置用於羣集節點的代理(請參閱例如https://rsync.samba.org/firewall.html,尤其是方法2),然後在不明確指定代理的情況下使用rsync。 – jciloa

+0

比以下答案中給出的更好的解決方案:https://puppet.com/blog/speed-up-ssh-by-reusing-connections – nus

回答

25

這裏是什麼工作爲了我。

ssh -N -L 2222:remote.example.com:22 bridge.example.com& 

然後我rsync的爲localhost這樣的::

rsync -auve "ssh -p 2222" . [email protected]:/some/path 
2

您應該連接到端口CLUSTERNODE的22,所以隧道應該像

ssh -L localhost:8000:clusternode:22 [email protected] 
43

嘗試使用下面的襯墊:

rsync -av -e "ssh -A [email protected] ssh" ./src [email protected]:/dst 

我在後臺隧道到遠程主機上運行的命令

+2

這一個班輪是完美的,因爲我不想打開一個持續通道。謝謝! – Marcus

+5

單線解決方案會很好,但它不適合我。我得到 「主機密鑰驗證失敗。 rsync:連接意外關閉(到目前爲止收到的0字節)[發件人] rsync錯誤:/SourceCache/rsync/rsync-42/rsync/io.c中的原因不明的錯誤(代碼255)(452)[sender = 2.6.9 ]「 我認爲這是因爲它只詢問我橋的密碼,它從不要求我輸入目標密碼(它們都有密碼) – simona

+0

@simona,如果你配置了SSH密鑰而不是密碼,這個('-A'將轉發用於訪問內存中SSH密鑰的代理連接) –