Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t通过SSH连接使用RSYNC守护程序_Ssh_Rsync - Fatal编程技术网

Can';t通过SSH连接使用RSYNC守护程序

Can';t通过SSH连接使用RSYNC守护程序,ssh,rsync,Ssh,Rsync,我在尝试将RSYNC与守护进程和SSH连接一起使用时遇到问题 我不想做的就是不用密码直接登录到rsync,并且能够使用rsync守护进程 这是我的conf文件(/etc/rsyncd.conf): 这不起作用(使用守护进程),但rsync要求我通过,然后说“@ERROR:auth在模块xyz上失败”,因为我没有这样配置身份验证: rsync -rzP --stats --ignore-existing --remove-sent-files rsync://rsync@mydomain.fr/x

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

我不想做的就是不用密码直接登录到rsync,并且能够使用rsync守护进程

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

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

rsync -rzP --stats --ignore-existing --remove-sent-files rsync://rsync@mydomain.fr/xyz/ /media/xyz --include="*.cfg" --exclude="*"
这不起作用(使用守护进程):

以下是错误消息:

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

ssh命令的-v选项表示允许连接,因此我认为问题是rsync,而不是ssh

有什么想法吗


感谢您的帮助:)

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

uid = rsync
gid = rsync

[yxz]
    path = /home/pierre/xyz
    read only = false
    hosts allow = <myIP>
更多信息:

  • 确保停止并禁用
    rsync
    系统服务。例如,如果您使用的是
    systemd
    systemctl disable--now rsync

  • 从rsync命令中删除
    -l rsync

    rsync-rzP-e“ssh”-stats--忽略现有--删除已发送的文件rsync://mydomain.fr/xyz/ /媒体/xyz--include=“*.cfg”--exclude=“*”

  • rsyncd.conf

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


  • 很好,它可以工作,但是进行了什么样的身份验证

    对于
    ssh
    命令(具体地说,与
    ssh mydomain.fr
    相同),连接像往常一样经过身份验证

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

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


    这种方法通常与专用SSH密钥一起使用,使用
    授权密钥
    中的
    command=“
    选项将其仅限于
    rsync
    。这样做的一个附带好处是,它会覆盖
    rsync
    尝试使用的命令,因此您可以强制它使用
    --config=~/rsyncd.conf
    ,而不是创建全局
    /etc/rsyncd.conf
    。IMO这有助于避免混淆IMO。这是一个很好的做法,因为如果创建全局配置文件,可能会存在意外运行不安全的系统服务的风险。例如,默认情况下,Debian 9启用rsync系统服务,如果您已经创建了
    /etc/rsyncd.conf
    ,它将在引导时自动启动

    • 由于某些原因,使用具有自定义外壳的专用用户而不是
      command=“”
      /
      ForceCommand
      ,这是一种不同寻常的变体:


    很好,它可以工作,但是进行了什么样的身份验证?现在,我可以这样连接(注意,远程系统中不存在的“toto”用户),这让我想象没有安全性:rsync-rzP-e“ssh-l rsync”-stats--忽略现有--删除已发送的文件rsync://toto@mydomain.fr/xyz//media/xyz--include=“.cfg”--exclude=”“Ya这是不安全的。如果要进行身份验证,必须使用
    auth users
    指定允许连接到此模块的用户名的逗号和空格分隔列表,并使用
    secrets
    指定包含用于验证此模块的用户名:密码对的文件名。参考手册页了解更多信息。我知道:)我想做的是用密钥而不是密码验证用户。感谢您的帮助。然后您可以通过ssh使用rsync。您是对的,如果我想使用密钥进行身份验证,解决方案是通过ssh进行身份验证,但在这种情况下,不可能使用rsync守护进程。这就是我一直在等待的答案:不可能通过SSH进行rsync并使用守护进程。
    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="*"
    
    uid = rsync
    gid = rsync
    
    [yxz]
        path = /home/pierre/xyz
        read only = false
        hosts allow = <myIP>
    
    rsync -rzv rsync@mydomain.fr::xyz/ /media/xyz 
    
    rsync -rzv rsync://rsync@mydomain.fr/xyz/ /media/xyz