如何在不安全的网络间执行服务器之间的安全 rsync

如何在不安全的网络间执行服务器之间的安全 rsync

基本上,我想问的是,是否有人遇到过将 rsync 包装在 ssh 中的方法。

使用 OpenSSH v4.9+ sftp 有一些不错的选项,允许您 chroot 传入连接等 - 这是我会考虑的解决方案,但是我被困在 RHEL 中,而 RHEL4 和 RHEL5 都不支持该版本的 ssh。

我当前的解决方案是使用客户端用户的密钥向服务器端添加类似的内容......

服务器%cat〜/ .ssh / authorized_keys
命令“cd /srv/rsync/etl && tar --exclude'./lost+found'-pcf-./” ssh-rsa ...

...这样客户端就只能被限制在一件事上了...

客户端%ssh -T -i $ {HOME} /.ssh/id_rsa[电子邮件保护]> 敏感.tar

这样可以确保连接以及服务器(从客户端)的安全,但是效率低下,因为所有文件都会被一遍又一遍地检索。

我想使用 rsync 做一些类似(或者更好的)的事情。

答案1

Rsync 支持使用 ssh 作为传输

rsync -az /path/to/source username@host:/path/to/destination

一些旧版本的 rsync 需要你明确指定 ssh

rsync -aze ssh /path/to/source host:/path/to/destination

rsync 的替代方法是BC Pierce 的 Unison,它具有与 rsync 类似的功能,但在两端保留本地索引,以避免必须遍历文件系统来计算增量

答案2

好吧,我终于明白了这一点,但解决方案并不像我希望的那么优雅。

在服务器端,您需要将以下内容添加到相关用户的authorized_keys文件中...

no-pty, command="exit"

在客户端上,您可以按如下方式创建隧道...

ssh -l username -fNTL 8073:server:873

一旦隧道建立,您就可以像往常一样 rsync - 无法使用双冒号语法 - 到本地主机。

您选择的本地主机端口号(8073)显然是完全可选的,只要记住这就是您必须 rsync 的端口号即可...

rsync --port=8073 -a user@localhost::mySecureStore /srv/some/place/

答案3

您可能对 daemon-over-ssh-mode 感兴趣,它是这个问题的主题:

无法让 rsync 在 daemon-over-ssh 模式下工作

相关内容