语境
我正在编写同步脚本来同步一些网络环境。
例如:从生产更新集成(主要是为了获取新的数据库行和上传的文件)
我的一些先决条件是:
- 开发人员将从集成服务器使用此脚本
- 需要 DSA 密钥才能连接到生产服务器
- 集成服务器无法存储开发者的私钥
问题
我希望开发人员连接到集成,以ssh -A
允许脚本使用他们的密钥连接到生产服务器:
+-------------+ SSH +-------------+ rsync +-------------+
| Developer | ---------> | Integration | --------> | Production |
| computer | | Platform | <-------- | platform |
+-------------+ +-------------+ +-------------+
(priv DSA key) (pub DSA key) (pub DSA key)
ssh
它对于或来说工作得很好scp
,但我无法让 rsync 使用转发的密钥连接到生产服务器。
我看见类似问题但是 rsync 是从用户的计算机运行的,因此 ssh 密钥文件可以通过-i
选项指向。
我担心的也不是密码相关,因为这个脚本将由真实用户运行(不是 cron)
我尝试像这样将远程 shell 指定给 rsync:
rsync -e "ssh -A" user@production
但没有运气。
答案1
好的,我的问题是我在非标准端口上“SSHing”,并且我试图通过--port=
选项告诉 rsync。
我使用rsync -e "ssh -p 1337" user@host:somepath/ .
它来代替,并且它开箱即用。