我想通过 SSL/TLS 加密连接运行 rsync。它不会直接执行此操作,因此我正在探索选项。stunnel 程序看起来很有前途,尽管由于需要使用 -r 选项跳转连接,因此比设计的更复杂。但是,我确实发现有一个 -l 选项可以运行程序。我假设它通过两个进程来实现,一个进程执行 SSL/TLS 工作,另一个进程作为客户端正在与之通信的工作进程。然后,它们将通过管道对或它们之间的双向套接字进行通信。
当我浏览大量网页以了解如何正确设置它时,让我感到奇怪的是,无论是作为独立守护进程运行,还是在 inetd 等超级守护进程下运行,rsync 的参数都是相同的。rsync --daemon 如何知道它是否应该打开套接字并监听许多连接,或者只是通过与启动时具有的 stdin/stdout 描述符进行通信来服务一个连接(这实际上会经过额外的过程来处理加密、描述和 SSL/TLS 协议层)?
然后我需要找到一种方法来包装客户端,让它在一个简单的命令中执行 SSL/TLS(而不是 stunnel 似乎支持的连接跳跃)。
答案1
--daemon
来自手册页中的部分rsync(1)
:
如果标准输入是套接字,那么 rsync 将假定它是通过 inetd 运行的,否则它将脱离当前终端并成为后台守护进程。
您可以通过运行以下命令查看适用于守护进程模式的命令行参数:
rsync --daemon --help
答案2
然后我需要找到一种方法来包装客户端,让它在一个简单的命令中执行 SSL/TLS(而不是 stunnel 似乎支持的连接跳跃)。
rsync 有一个--rsh
选项可以在客户端生成 stunnel 并使用 stdin/stdout,而 stunnel 有一个exec
选项可以在服务器端生成 rsync - 结合这两个选项可以得到你想要的。请参阅dozzie 的通过 SSL 进行 rsync获取更多信息和运行此配置的现成脚本(需要 git 下载)。