使用转发的密钥从远程 ssh 服务器进行 rsync

Hug*_*uge 5 ssh rsync ssh-agent

语境

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

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

我的一些先决条件是:

  • 开发人员将从集成服务器使用此脚本
  • 需要 DSA 密钥才能连接到生产服务器
  • 集成服务器无法存储开发者的私钥

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

+-------------+    SSH     +-------------+   rsync   +-------------+
| Developer   | ---------> | Integration | --------> |  Production |
|  computer   |            |   Platform  | <-------- |   platform  |
+-------------+            +-------------+           +-------------+
(priv DSA key)              (pub DSA key)             (pub DSA key)
Run Code Online (Sandbox Code Playgroud)

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

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

我担心的不是密码短语,因为此脚本将由真实用户(不是 cron)运行

我试图像这样将远程 shell 指定为 rsync:

rsync -e "ssh -A" user@production

但没有运气。

Hug*_*uge 2

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

我用了rsync -e "ssh -p 1337" user@host:somepath/ .它,开箱即用,效果很好。