您好,我有一个 Windows 2003 服务器,我需要将其备份到linux
客户端,因此我安装cygwin
在Win2k3
.我Win2k3
已经启用了ssh
,scp
但是(因为Win2k3
服务器使用自定义的 Windows SFTP 服务器侦听端口 22)我必须设置scp
/在 cygwin 上ssh
运行。port 222
效果很好。只要我使用 ssh/scp 并在命令行中使用 -p/-P 开关即可。
我通过 ssh/scp 为我的用户建立了一个从到 的SSH Public/Private Key Pair
工作效果很好。linux client
Win2k3 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/config
与ssh
该主机的连接位于端口 222 上:
Host that-host
Port 222
答案2
一个很晚的答案,但可能会帮助其他人......
rsync
以两种模式之一运行。
您可以跨 运行它
ssh
,本地rsync
进程将在远程系统上启动一个rsync
进程作为其服务器,并ssh
提供两个系统之间的加密传输。此模式由远程主机和远程路径之间的单个冒号指示:rsync /path/to/local/ remote:/path/to/remote
您可以将其作为守护进程运行,本地
rsync
进程将直接连接到已经运行的服务器rsync
进程。ssh
此方案不提供加密(或)。此模式由远程主机和远程路径之间的双冒号表示:rsync /path/to/local remote::/path/to/remote
您不需要安装ssh
服务器和一个rsync
守护进程。两者之一就足够了。
对于安全 LAN 或文件内容公开的情况,rsync
守护进程可能更合适,因为它不需要用户能够登录到远程系统。该ssh
方法更适合不安全或不受信任的网络(即 Internet),但它确实需要非常仔细的设置或用户能够登录到远程系统的能力。
在您希望只能通过 进行连接的情况下ssh
,配置或运行守护程序是没有意义的rsync
。