远程SSH服务器的rsync与转发的密钥

上下文

我正在编写一个同步脚本来同步一些Web环境。

例如:从生产中更新集成(主要是获取新的数据库行和上传的文件)

我的一些先决条件是:

  • 开发人员将使用集成服务器中的这个脚本
  • DSA密钥需要连接到生产服务器
  • 集成服务器不能存储开发人员的私钥

我希望开发人员连接到与ssh -A集成,以允许脚本使用密钥连接到生产服务器:

 +-------------+ SSH +-------------+ rsync +-------------+ | Developer | ---------> | Integration | --------> | Production | | computer | | Platform | <-------- | platform | +-------------+ +-------------+ +-------------+ (priv DSA key) (pub DSA key) (pub DSA key) 

它适用于sshscp ,但我无法使rsync使用转发的密钥连接到生产服务器。

我看到类似的问题,但rsync从用户的计算机运行,因此ssh密钥文件可能由-i选项指出。

我关心的不是密码相关,因为这个脚本将由真正的用户运行(不是cron)

我试图指定远程shellrsync像这样:

rsync -e "ssh -A" user@production

但没有运气。

好吧,我的问题是,我在非标准端口上“SSHing”,我试图通过--port=选项来告诉rsync。

我使用rsync -e "ssh -p 1337" user@host:somepath/ . 相反,它工作得很好,开箱即用。