通过ssh隧道rsync

通过ssh隧道rsync,ssh,rsync,ssh-tunnel,Ssh,Rsync,Ssh Tunnel,我想通过另一个系统与通常连接的群集节点同步: 假设我先连接到 ssh user@bridge 从那里到 ssh user@clusternode 现在我想从我的工作站同步到clusternode。我做了以下工作: 我打开一个ssh隧道 ssh -L8000:clusternode:8000 user@bridge 我将从工作站同步到clusternode rsync -e "ssh -p8000" source user@localhost:destination 我明

我想通过另一个系统与通常连接的群集节点同步:

假设我先连接到

  ssh user@bridge 
从那里到

  ssh user@clusternode
现在我想从我的工作站同步到clusternode。我做了以下工作:

  • 我打开一个ssh隧道

    ssh -L8000:clusternode:8000 user@bridge
    
  • 我将从工作站同步到clusternode

    rsync -e "ssh -p8000" source user@localhost:destination
    
我明白了,这是行不通的

 ssh_exchange_identification: Connection closed by remote host
为什么它不起作用?我该怎么办


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


我认为要理解我的问题是网桥和目的地之间的第二次身份验证,所以我改为方法2,它也不是很优雅,但它可以工作。我想尝试方法3,但我不知道如何配置rsync守护进程,您应该连接到clusternode的端口22,因此隧道应该如下所示

ssh -L localhost:8000:clusternode:22 user@bridge

这是对我有用的东西

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

 ssh -N -L 2222:remote.example.com:22 bridge.example.com&
然后我像这样rsync到localhost:

rsync -auve "ssh -p 2222" . me@localhost:/some/path
试试这一行:

rsync -av -e "ssh -A root@proxy ssh" ./src root@target:/dst

尝试对ssh命令使用-v(或-vvv)选项:
rsync-e“ssh-vvv-p8000”源代码user@localhost:destination
要启用详细的ssh日志记录,错误几乎总是在那里。您可以设置一个用于群集节点的代理(例如,请参阅方法2),然后在不明确指定代理的情况下使用rsync。这是一个比下面给出的答案更好的解决方案:为什么这个问题离题了?@rashid“我们不允许对堆栈溢出提出有关专业服务器或网络相关基础设施管理的问题。您可以编辑该问题,使其位于堆栈溢出主题上,或在服务器故障上发布一个新的问题。“这一行非常完美,因为我不想打开一个持久性隧道。谢谢!一行解决方案很好,但它不适合我。我得到了“主机密钥验证失败”。rsync:connection意外关闭(到目前为止收到0个字节)[sender]rsync error:at/SourceCache/rsync/rsync-42/rsync/io.c(452)[sender=2.6.9]“我想这是因为它只问我网桥的密码,而从不问我目标的密码(它们都有密码)但是如果我们不能设置SSH密钥呢?是否可以使用一行程序并为两个服务器提供密码?我发现使用
rsync-av-e“SSH-auser@proxyssh-o strichostkeychecking=no“
没有失败,主机密钥验证失败。这仅在主机密钥以前从未见过的情况下才有效,如果它已更改,请添加
-o UserKnownHostsFile=/dev/null
(除非您知道它更改的原因,否则不建议使用)。@abalter在没有-A的情况下尝试对我没有帮助。您必须删除第一个命令上的最后一个字符
&
,才能输入密码。