rsync通过ssh隧道

sim*_*ona 39 ssh rsync ssh-tunnel

我想rsync到我通常通过另一个系统连接的集群节点:

说我先连接到

  ssh user@bridge 
Run Code Online (Sandbox Code Playgroud)

从那里到

  ssh user@clusternode
Run Code Online (Sandbox Code Playgroud)

现在我想从我的工作站rsync到clusternode.我做以下事情:

我知道它不起作用

 ssh_exchange_identification: Connection closed by remote host
Run Code Online (Sandbox Code Playgroud)

为什么不起作用?我需要做什么?


我在这里找到了很多信息:

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

我想要明白我的问题是桥和目的地之间的第二次认证,所以我改为方法2,这也不是很优雅,但它的工作原理.我想尝试方法3,但我不知道如何配置rsync守护进程

小智 63

试试这个单行:

rsync -av -e "ssh -A root@proxy ssh" ./src root@target:/dst
Run Code Online (Sandbox Code Playgroud)

  • 一线解决方案会很好,但它对我不起作用.我得到"主机密钥验证失败.rsync:连接意外关闭(到目前为止收到0个字节)[发送者] rsync错误:/SourceCache/rsync/rsync-42/rsync/io.c(452)中无法解释的错误(代码255) [sender = 2.6.9]"我认为这是因为它只询问我桥的密码,它从不会问我目标的密码(他们都有密码) (6认同)
  • 那个班轮是完美的,因为我不想打开一个持久的隧道.谢谢! (2认同)
  • 但是如果我们不能设置 SSH 密钥怎么办?是否可以做一个班轮并为两台服务器提供密码? (2认同)
  • 我发现使用 `rsync -av -e "ssh -A user@proxy ssh -o StrictHostKeyChecking=no"` 并没有因“主机密钥验证失败”而失败。仅当主机密钥以前从未见过时才有效,如果它已更改,请添加“-o UserKnownHostsFile=/dev/null”(不推荐,除非您知道它更改的原因)。 (2认同)

小智 30

这对我有用.

我在后台运行命令以隧道到远程主机:

 ssh -N -L 2222:remote.example.com:22 bridge.example.com&
Run Code Online (Sandbox Code Playgroud)

然后我像这样rsync到localhost:

rsync -auve "ssh -p 2222" . me@localhost:/some/path
Run Code Online (Sandbox Code Playgroud)


小智 5

你应该连接到 clusternode 的端口 22,所以隧道应该看起来像

ssh -L localhost:8000:clusternode:22 user@bridge
Run Code Online (Sandbox Code Playgroud)