我想配置 rsync 以接受来自我服务器上端口 874 的 SSL/TLS 连接。我按照 rsyncd.conf(5) 手册页中的步骤操作,配置了一个域并为其获取了 SSL 证书。但是,当我尝试使用 rsync-ssl 进行连接时,它会产生此错误:
verify depth is 4
---MOTD MESSAGE HERE---
@ERROR: protocol startup error
rsync error: error starting client-server protocol (code 5) at main.c(1833) [Receiver=3.2.4]
我的 nginx.conf 流部分:
stream {
server {
listen 874 ssl;
listen [::]:874 ssl;
ssl_certificate /{...}/fullchain.cer;
ssl_certificate_key /{...}/private.key;
ssl_session_timeout 1440m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";
ssl_dhparam /{...}/ssl-dhparams.pem;
proxy_pass localhost:873;
proxy_protocol on; # Requires "proxy protocol = true"
proxy_timeout 1m;
proxy_connect_timeout 5s;
}
}
我的 rsyncd.conf:
uid = nobody
gid = nobody
use chroot = no
max connections = 20
syslog facility = local5
pid file = /run/rsyncd.pid
lock file = /run/rsync.lock
log file = /var/log/rsync.log
motd file = /etc/rsyncd.motd
--- Directory sections here---
我做错了什么?
更新:我使用 Arch Linux 作为服务器。客户端运行正常(但服务器端/守护进程却不行)。
感谢您的帮助!
答案1
经过大量挖掘,我最终找到了解决方案本网站。它已经过时了,我需要改变一些东西,所以我将解释如何去做:
首先,我的服务器使用 Arch,因此当您按照这些步骤操作时,可能会出现一些变化。
安装 rsync、openssl 和 stunnel。
配置 rsyncd(显然),我不会在这里解释。
编辑
/etc/stunnel/stunnel.conf
并取消注释(或创建)以下行:include = /etc/stunnel/conf.d
。这不是必需的,但它将简化很多其他事情。创建文件夹
/etc/stunnel/conf.d
并在其中创建文件。我将其命名为rsync-ssl.conf
。编辑该文件并写入以下代码(编辑括号之间的部分):
cert = [PATH_TO_YOUR_CERTIFICATE] key = [PATH_TO_YOUR_PRIVATE_KEY] client = no pid = /var/run/stunnel.pid [rsync] accept = 874 connect = 873
请记住,您需要为您的域名提供有效的 SSL 证书。我建议将 Certbot/acme.sh 与 Let's Encrypt 结合使用。
运行
systemctl disable --now stunnel rsyncd
并systemctl enable --now stunnel rsyncd
。在某些情况下,您可能需要重新启动整个服务器。完成!现在您应该能够使用 rsync-ssl 连接到服务器。请记住,您需要一个包含在您在文件中指定的证书中的域名
rsync-ssl.conf
。否则它将失败。