通过多个 ssh 连接使用密钥进行 rsync

Eve*_*ews 5 ssh rsync

我需要从目标服务器执行 rsync,中间有一个服务器,我在目标服务器和中间服务器上都有相同的公钥。我想使用该密钥,这样我就不必进行密码验证。

local --ssh--> middle --ssh--> target
Run Code Online (Sandbox Code Playgroud)

阅读通过防火墙使用 rsync 的方法 1 看起来这是可行的,但我已经能够弄清楚命令语法的 ssh 部分。

当我尝试

ssh -i $KEY -A user@middle ssh user@target
Run Code Online (Sandbox Code Playgroud)

我得到

Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
Run Code Online (Sandbox Code Playgroud)

显然,代理转发并没有像我预期的那样发生。

理想情况下,我想将所有内容都放在一个命令中,而不必在 ~/.ssh/config 文件中放入任何内容。在这种情况下执行 rsync 的所有步骤是什么?

谢谢,埃弗雷特

小智 4

“-A”只会“携带”加载到 ssh-agent 中的身份。(命令中的“-i”是不够的。)

这样的事情怎么样?

ssh-agent sh -c "ssh-add test_ident; rsync -avr --rsh='ssh -TA hostA ssh -TA ' foo/ hostB:/var/tmp/foo/"
Run Code Online (Sandbox Code Playgroud)