我正在尝试设置 rsync 以每天从服务器复制数据。为了使系统尽可能受到限制,我尝试使用手册页中描述的模式:“通过远程外壳连接使用 RSYNC-DAEMON 功能”
所以我在根主文件夹中放置了一个名为 rsyncd.conf 的文件:
[root]
path = /
read only = true
并尝试复制 /etc/passwd 作为测试:
rsync -vv -e ssh myserver::root/etc/passwd .
但我得到以下信息:
opening connection using: ssh myserver rsync --server --daemon .
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(635) [receiver=3.0.3]
我做这一切的原因是,一旦我让它工作,我计划通过指定命令来限制访问
rsync --server --daemon .
在 ~/.ssh/authorized_keys
文档或 rsync 的实施中似乎存在错误。man rsync说:
但是当连接到 root 时,根据 /var/log/messages,它正在 /etc/rsyncd.conf 中查找配置文件(不通过 SSH 使用时 rsyncd.conf 文件的标准位置。
我不得不通过添加来强制 ssh 服务器使用正确的配置文件
到 /root/.ssh/authorized_keys。
我不只是将配置放在默认位置的原因是我不希望有人意外启动正常的 rsync 守护程序 - 我只希望守护程序在获得正确的 ssh 密钥时拥有这么多的访问权限。
如果您想尽可能地锁定它,我不建议在守护程序模式下使用 rsync。您希望限制允许 SSH 密钥运行的命令并使用该密钥调用复制命令。
要找出限制密钥的命令,请运行适当的 rsync 命令行,并在 ssh 命令中稍作修改:
您将在调试输出中看到一行,例如:
这个确切的命令就是您想要限制密钥能够在 .ssh/authorized_keys 中运行的命令: