在我的 LAN(debian 服务器、Windows 客户端)上,我使用 rsync:// 协议和此代码
cwRsync\rsync.exe -avLP --force --append-verify rsync://rsync-usb@server/rsync-usb/* usb/
我读过,守护进程模式下的 rsync 使用 rsync:// 协议不使用加密,所以如果我想通过互联网使用 rsync,我想使用加密。我喜欢 rsync://user@server/module 的简单性。
我不想使用允许登录的 ssh 用户,因为我不想授予对我的服务器的访问权限。
我创建了一名登录被阻止的用户
rsyncssh:x:1001:1007:,,,:/tmp:/bin/false
有没有办法通过 ssh 隧道 rsync:// 协议?例如使用 plink.exe (putty 链接)和私人用户密钥?
答案1
我经常使用 SSH 端口隧道来创建加密通道。由于您使用的是rsync://
URL,我假设您有 rsync 守护进程在远程服务器上的 TCP 端口 873 上运行。我们可以按如下方式转发此端口:
ssh -N -L 873:localhost:873 rsyncssh@server
该-N
选项阻止执行远程命令,在您的情况下,由于没有有效的 shell,这会断开会话。您现在可以通过本地主机上的转发端口连接到远程服务器来与远程服务器同步,即运行旧命令但替换@server
为@localhost
.
您还可以-f
向 SSH 命令添加选项,将 SSH 移至后台,如果您想始终保持连接打开状态,这可能会很方便。为了方便和安全,我建议使用私钥登录。
如果您没有在远程服务器上运行 rsync 守护程序,请设置一个并在man 5 rsyncd.conf
必要时使用文档。
答案2
rsync可以直接使用ssh,使用-e
rsync -avP -e /home/share/ remote:/home/share
否则隧道工作正常,另一个解决方案可以是stunell