通过 SSH 进行 Rsync 和无密码密钥安全

通过 SSH 进行 Rsync 和无密码密钥安全

我需要将文件从一组服务器发送到远程服务器。我的计划是通过 SSH 使用 rsync,因为它满足我对安全连接的要求以及在成功传输后从源中删除的能力。我还可以限制防火墙以仅允许我在端口 22 上信任的 IP。

如果我设置一个 cron 作业来使用 rsync 通过 SSH 传输这些文件,我假设我需要设置 SSH 密钥才能进行通信。但是,将公钥存储在一堆服务器上的安全风险是什么?为每个服务器创建单独的密钥是否更好?此帐户将仅用于传输文件。

编辑以扩展我的网络。

我有多个由第三方托管公司托管的服务器,它们都有公共 IP。我的家庭网络有一个静态 IP,服务器位于 NAT 路由器后面。所以我不知道如何从 NAT 后面的设备中提取中央服务器上的数据。

我可以在 NAT 后面创建一个中央服务器来收集所有信息,并打开一个端口转发。有了防火墙来限制端口 22 和数据库服务器的静态 IP,我想这可以处理任何可能的安全漏洞。

答案1

  1. 如果可以的话就反其道而行。
  2. 在中央服务器上编写一个包含所有 rsync 操作的脚本,并运行它来自该服务器
  3. 您将保留所有访问密钥。您可以在所有客户端上将 /bin/nologin 设置为 shell,以再次降低风险。
  4. 如果其中一个客户端掉线了,所有其他客户端仍会继续工作。

答案2

我要补充一点,当通过 ssh 使用 rsync 时,限制可以使用相应密钥运行哪些命令总是一个好主意:即使在中央服务器上的私钥被盗,也只能在其他服务器组上运行此命令。

您可以使用“authorized_keys”文件中的“command=custom_script”选项执行此操作。

只需使用“rrsync”脚本作为“限制命令”,它就能完美地完成工作。(debian 类 distrib 上的 /usr/share/doc/rsync/scripts/rrsync.gz)

更多详情请点击这里:

http://www.guyrutenberg.com/2014/01/14/restricting-ssh-access-to-rsync/

https://www.v13.gr/blog/?p=216

相关内容