基本上我要问的是,有没有人遇到过将 rsync 包装在 ssh 中的方法。
使用 OpenSSH v4.9+ sftp 有一些不错的选项,允许您对传入的连接进行 chroot 等 - 这是我会考虑的解决方案,但是我坚持使用 RHEL,而且 RHEL4 或 RHEL5 都不是那个版本的SSH。
我目前的解决方案是使用客户端用户的密钥向服务器端添加这样的东西......
服务器% cat ~/.ssh/authorized_keys command="cd /srv/rsync/etl && tar --exclude './lost+found' -pcf - ./" ssh-rsa...
...因此客户将被限制在一件事和一件事上...
client% ssh -T -i ${HOME}/.ssh/id_rsa [email protected] > sensative.tar
这可以保护连接以及服务器(来自客户端),但是效率低下,因为所有文件都将被一遍又一遍地检索。
我正在使用 rsync 做类似(或更好)的事情。
Rsync 支持使用 ssh 作为传输
一些旧版本的 rsync 要求您明确指定 ssh
使用 rsync 的替代方法是BC Pierce 的 Unison,它具有与 rsync 类似的功能,但在两端保留本地索引以避免必须遍历文件系统来计算增量
好吧,我终于想通了,但解决方案并不像我希望的那样优雅。
在服务器端,您需要将以下内容添加到相关用户的 authorized_keys 文件中......
然后在客户端上,您可以按如下方式创建隧道...
建立隧道后,您可以像往常一样 rsync - 无法使用双冒号语法 - 到 localhost。
您选择的 localhost 端口号 (8073) 显然是完全可选的,只要记住这就是您必须 rsync到的...
您可能对 daemon-over-ssh-mode 感兴趣,这是这个问题的主题:
无法让 rsync 在 daemon-over-ssh 模式下工作