尝试将RSYNC与守护程序和SSH连接一起使用时遇到问题。
我不想要做的就是简单地登录rsync而不会使用rsync守护进程。
这是我的配置文件(/etc/rsyncd.conf):
uid = rsync
gid = rsync
[yxz]
path = /home/pierre/xyz
read only = false
auth users = rsync
hosts allow = <myIP>
/ home / pierre / xyz已使rsync用户可以访问。
这正在工作(但未使用守护程序):
rsync -rzP --stats --ignore-existing --remove-sent-files [email protected]:/home/pierre/xyz/ /media/xyz --include="*.cfg" --exclude="*"
这不起作用(使用守护程序),但rsync要求我通过,然后说“@ERROR:模块xyz上的身份验证失败”,因为我没有以这种方式配置身份验证:
rsync -rzP --stats --ignore-existing --remove-sent-files rsync://[email protected]/xyz/ /media/xyz --include="*.cfg" --exclude="*"
这不起作用(使用守护程序):
rsync -rzP -e "ssh -l rsync" --stats --ignore-existing --remove-sent-files rsync://[email protected]/xyz/ /media/xyz --include="*.cfg" --exclude="*"
这是错误消息:
使用ssh命令的-v选项,它表示允许连接,因此我认为rsync是问题,而不是ssh。
有想法吗?
谢谢你的帮助 :)
最佳答案
rsync
系统服务。例如。如果您使用的是systemd
:systemctl disable --now 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
,它将在启动时自动启动。command=""
/ ForceCommand
的异常变体,出于某种原因:http://mennucc1.debian.net/howto-ssh-rsyncd.html 关于ssh - 无法通过SSH连接使用RSYNC守护程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22726183/