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