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

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

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

local --ssh--> middle --ssh--> target

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

当我尝试

ssh -i $KEY -A user@middle ssh user@target

我明白了

Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).

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

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

谢谢,埃弗雷特

答案1

‘-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/"

答案2

我个人使用以下脚本分两次完成此操作:

#!/bin/bash
ssh -fN [email protected] -L2211:target.foo:22
rsync "-e ssh -p 2211" /Users/me/dir1/ root@localhost:/backup/dir1/ -avz --progress --delete-after
rsync "-e ssh -p 2211" /Users/me/dir2/ root@localhost:/backup/dir2/ -avz --progress --delete-after

按要求进行修改。

这看起来比使用 rsync 选项更容易,而且如果您的目标和中间有您的密钥,您就不应该被提示。

相关内容