ssh/scp 可以工作,但 rsync 总是说“不”

ssh/scp 可以工作,但 rsync 总是说“不”

您好,我有一个 Windows 2003 服务器,我需要将其备份到linux客户端,因此我安装cygwinWin2k3.我Win2k3已经启用了sshscp但是(因为Win2k3服务器使用自定义的 Windows SFTP 服务器侦听端口 22)我必须设置scp/在 cygwin 上ssh运行。port 222效果很好。只要我使用 ssh/scp 并在命令行中使用 -p/-P 开关即可。

我通过 ssh/scp 为我的用户建立了一个从到 的SSH Public/Private Key Pair工作效果很好。linux clientWin2k3 server

然后我在 Win2k3 上启动 rsyncd 并将用户添加到 中/etc/rsyncd.conf,创建/etc/rsyncd.secrets并分配权限,看起来不错。

然后,当我尝试通过 ssh 进行 rsync 连接 /not/ 时,它可以工作,但我想 /only/ 通过 ssh 连接,当我这样做时,每次都会失败并显示 0 字节。我尝试过多个用户并重写 rsyncd.conf 一百万次,但它不断失败。我开始认为我需要告诉 rsync 客户端,从客户端的角度来看,ssh 端口是 222。如果是这样我该怎么做?

答案1

是的,当然你必须:

rsync -e 'ssh -p 222' ...

或者:

RSYNC_RSH='ssh -p 222' rsync ...

或者,您可以指定默认情况下~/.ssh/configssh该主机的连接位于端口 222 上:

Host that-host
Port 222

答案2

一个很晚的答案,但可能会帮助其他人......

rsync以两种模式之一运行。

  1. 您可以跨 运行它ssh,本地rsync进程将在远程系统上启动一个rsync进程作为其服务器,并ssh提供两个系统之间的加密传输。此模式由远程主机和远程路径之间的单个冒号指示:

    rsync /path/to/local/ remote:/path/to/remote
    
  2. 您可以将其作为守护进程运行,本地rsync进程将直接连接到已经运行的服务器rsync进程。ssh此方案不提供加密(或)。此模式由远程主机和远程路径之间的双冒号表示:

    rsync /path/to/local remote::/path/to/remote
    

您不需要安装ssh服务器一个rsync守护进程。两者之一就足够了。

对于安全 LAN 或文件内容公开的情况,rsync守护进程可能更合适,因为它不需要用户能够登录到远程系统。该ssh方法更适合不安全或不受信任的网络(即 Internet),但它确实需要非常仔细的设置或用户能够登录到远程系统的能力。

在您希望只能通过 进行连接的情况下ssh,配置或运行守护程序是没有意义的rsync

相关内容