无法使rsync在守护进程ssh模式下工作

我试图设置rsync来每天从服务器复制数据。 为了使系统尽可能受限制,我试图使用手册页中描述的模式:“通过远程 – shell连接使用RSYNC-DAEMONfunction”

所以我把一个名为rsyncd.conf的文件放在根目录下:

[root] path = / read only = true 

并试图复制/ etc / passwd作为testing:

 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的implimentation有一个错误。 男人rsync说:

Rsync支持使用远程shell连接到主机,然后生成一次性使用的“守护程序”服务器,该服务器希望在远程用户的目录中读取其configuration文件。

但是当连接到根目录时,根据/ var / log / messages,它正在/etc/rsyncd.conf中查找configuration文件(rsyncd.conf文件在不使用SSH时的标准位置。

我不得不强迫SSH服务器通过添加使用正确的configuration文件

 command="rsync --config=/root/rsyncd.conf --server --daemon ." 

到/root/.ssh/authorized_keys。

我没有把configuration放在默认位置的原因是我不希望有人意外启动一个正常的rsync守护进程 – 我只想要一个守护进程获得正确的ssh密钥时有这么多的访问权限。

在守护进程模式下的rsync不是我所build议的,如果你想尽可能的把它锁住。 您想要限制允许SSH密钥运行的命令,并使用该密钥调用复制命令。

要找出限制密钥的命令,在ssh命令中稍加修改就可以运行相应的rsync命令行:

 rsync -avz -e 'ssh -v' stuff somewhere:/place 

您将在debugging输出中看到如下行:

 debug1: Sending command: rsync --server -vlogDtprze.iLs . /place 

确切的命令是你想要限制密钥能够运行在.ssh / authorized_keys:

 command="rsync --server -vlogDtprze.iLs . /place" ssh-dss AAAASSHKEY=