You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过SSH网关与rsync端口(873)实现跨服务器rsync传输的问题咨询

问题背景

服务器架构:

server A --> server B (开放22端口) --> (防火墙) --> server C (开放873端口)

IP信息:

  • server B:10.10.10.5
  • server C:10.10.10.6
    • rsync模块名:dog

当前操作:从server A通过22端口连接到server B,希望将server B的文件通过873端口传输到server C,执行了以下命令:

rsync --list-only -e "ssh 10.10.10.5 rsync" 10.10.10.6::dog

出现错误:

rsync: did not see server greeting
rsync error: error starting client-server protocol (code 5) at main.c(1666) [Receiver=3.1.2]

疑问:该架构下能否实现rsync传输?(注:Server C无法开放22端口,仅873端口开放且rsync守护进程已运行)


解答

可以实现rsync传输,原命令的问题在于-e参数用法错误,-e用于指定rsync调用的远程shell,你写的ssh 10.10.10.5 rsync不符合语法逻辑。

以下是两种正确的实现方式:

方式一:登录server B后执行rsync

先从server A登录到server B:

ssh 10.10.10.5

在server B的终端中直接执行rsync命令(server B可直接访问server C的873端口):

# 列出server C上dog模块的内容
rsync --list-only 10.10.10.6::dog

# 同步文件示例:将server B的/local/path目录传输到server C的dog模块
rsync -avz /local/path 10.10.10.6::dog

方式二:从server A远程调用server B的rsync命令

无需登录server B,直接在server A终端执行:

# 列出模块内容
ssh 10.10.10.5 'rsync --list-only 10.10.10.6::dog'

# 同步文件示例:将server B的/local/path目录传输到server C的dog模块
ssh 10.10.10.5 'rsync -avz /local/path 10.10.10.6::dog'

如果需要从server A直接传输文件到server C(通过server B中转),还可以用端口转发:
在server A上建立本地端口转发,将本地8730端口映射到server C的873端口:

ssh -L 8730:10.10.10.6:873 10.10.10.5

之后在server A的另一个终端执行rsync命令,访问本地转发端口:

rsync --list-only localhost:8730::dog

内容的提问来源于stack exchange,提问作者oraedoa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 00:27:20