隧道 rsync:// 协议通过 ssh

Cou*_*udy 2 linux ssh rsync

在我的局域网(debian 服务器,windows 客户端)上,我使用 rsync:// 协议和此代码

cwRsync\rsync.exe -avLP --force --append-verify rsync://rsync-usb@server/rsync-usb/* usb/
Run Code Online (Sandbox Code Playgroud)

我读过,使用 rsync:// 协议的守护进程模式下的 rsync 不使用加密,所以如果我想通过互联网使用 rsync,我想使用加密。我喜欢 rsync://user@server/module 的简单性。

我不想使用允许登录的 ssh 用户,因为我不想访问我的服务器。

我创建了一个登录被阻止的用户

rsyncssh:x:1001:1007:,,,:/tmp:/bin/false
Run Code Online (Sandbox Code Playgroud)

有没有办法通过 ssh 隧道传输 rsync:// 协议?例如使用 plink.exe(腻子链接)和私人用户密钥?

Ben*_* B. 5

我经常使用 SSH 端口隧道来创建加密通道。由于您使用的是rsync://URL,我假设您在远程服务器的 TCP 端口 873 上运行了 rsync 守护程序。我们可以按如下方式转发此端口:

ssh -N -L 873:localhost:873 rsyncssh@server
Run Code Online (Sandbox Code Playgroud)

-N选项会阻止执行远程命令,在您的情况下,这会断开会话,因为没有有效的 shell。您现在可以通过本地主机上的转发端口连接到远程服务器来与远程服务器同步,即运行旧命令但替换@server@localhost.

您还可以将-f选项添加到 SSH 命令以将 SSH 移动到后台,如果您想始终保持连接打开,这可能会很方便。为了方便和安全,我建议使用私钥登录。

如果您没有在远程服务器上运行 rsync 守护程序,请设置一个并在man 5 rsyncd.conf必要时使用其中的文档。