无法通过SSH连接使用RSYNC守护程序

时间:2014-03-29 02:17:08

标签: ssh rsync

尝试将RSYNC与守护进程和SSH连接一起使用时遇到问题。

我要做的只是在没有通过的情况下登录到rsync并且能够使用rsync守护进程。

这是我的conf文件(/etc/rsyncd.conf):

uid = rsync
gid = rsync

[yxz]
    path = /home/pierre/xyz
    read only = false
    auth users = rsync
    hosts allow = <myIP>

/ home / pierre / xyz有rsid用户可以访问的rsid。

这是有效的(但不使用守护进程):

rsync -rzP --stats --ignore-existing --remove-sent-files rsync@mydomain.fr:/home/pierre/xyz/ /media/xyz --include="*.cfg" --exclude="*"

这不起作用(使用守护进程),但rsync要求我通过,然后在模块xyz&#34;上说&#34; @ERROR:auth失败因为我没有以这种方式配置身份验证:

rsync -rzP --stats --ignore-existing --remove-sent-files rsync://rsync@mydomain.fr/xyz/ /media/xyz --include="*.cfg" --exclude="*"

这不起作用(使用守护程序):

rsync -rzP -e "ssh -l rsync" --stats --ignore-existing --remove-sent-files rsync://rsync@mydomain.fr/xyz/ /media/xyz --include="*.cfg" --exclude="*"

以下是错误消息:

  

rsync:连接意外关闭(到目前为止收到0个字节)[Receiver]   rsync错误:io.c上的rsync协议数据流(代码12)中的错误(605)[Receiver = 3.0.9]

使用ssh命令的-v选项,它表示允许连接,所以我认为rsync是问题,而不是ssh。

任何想法?

感谢您的帮助:)

2 个答案:

答案 0 :(得分:1)

要在没有密码的情况下使用rsync守护程序,您应该从配置文件中删除auth users行。

uid = rsync
gid = rsync

[yxz]
    path = /home/pierre/xyz
    read only = false
    hosts allow = <myIP>

启动守护程序后,您可以使用::语法或使用rsync://前缀来引用模块,如下所示

rsync -rzv rsync@mydomain.fr::xyz/ /media/xyz 

rsync -rzv rsync://rsync@mydomain.fr/xyz/ /media/xyz 

更多信息:man rsyncd.conf

答案 1 :(得分:1)

  1. 请确保您停止并禁用rsync系统服务。例如。如果您使用的是systemdsystemctl disable --now rsync

  2. 从rsync命令中删除-l rsync

    rsync -rzP -e "ssh" --stats --ignore-existing --remove-sent-files rsync://mydomain.fr/xyz/ /media/xyz --include="*.cfg" --exclude="*"

  3. auth users = rsync删除rsyncd.conf

  4. 我发现,如果我不使用root,还必须在use chroot = no中添加rsyncd.conf

  

它很好用,但是会进行哪种身份验证?

对于连接ssh的连接将照常进行验证(具体与ssh mydomain.fr相同)。

不涉及系统服务rsync。相反,它使用SSH启动rsync --server --daemon .的实例并与之通信。如果将-e "ssh"替换为-e "ssh -v",则可以看到此命令正在启动。

使用系统服务rsync的问题是它不加密网络连接,因此网络能够截取和修改传输中的数据。这在某种程度上破坏了使用任何身份验证的意义。


这种方法通常与专用的SSH密钥一起使用,使用command=""中的authorized_keys选项将其限制为rsync。这样做的好处是,它会覆盖rsync尝试使用的命令,因此您可以强制其使用--config=~/rsyncd.conf而不是创建全局/etc/rsyncd.conf。 IMO这对于避免IMO混乱很有用。这是一个好习惯,因为如果您创建全局配置文件,则可能会意外运行不安全的系统服务。例如,Debian 9默认启用rsync系统服务,如果创建了/etc/rsyncd.conf,它将在启动时自动启动。