尝试将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。
任何想法?
感谢您的帮助:)
答案 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)
请确保您停止并禁用rsync
系统服务。例如。如果您使用的是systemd
:systemctl disable --now rsync
。
从rsync命令中删除-l rsync
rsync -rzP -e "ssh" --stats --ignore-existing --remove-sent-files rsync://mydomain.fr/xyz/ /media/xyz --include="*.cfg" --exclude="*"
从auth users = rsync
删除rsyncd.conf
我发现,如果我不使用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
,它将在启动时自动启动。
https://serverfault.com/questions/6367/cant-get-rsync-to-work-in-daemon-over-ssh-mode
使用带有自定义外壳的专用 user 而不是command=""
/ ForceCommand
的异常变体,出于某些原因:http://mennucc1.debian.net/howto-ssh-rsyncd.html