在无网高安全机房中,需通过跳板机中转实现rsync同步:一、配置源服务器ssh proxyjump指向跳板机与目标机;二、执行rsync -e 'ssh -f ~/.ssh/config'推送数据;三、强化密钥权限、限制跳板机命令、开启ssh日志并接入宝塔计划任务自动化。

在无网高安全机房(即物理隔离、无外网出口、仅内网可达)中,无法直接用 rsync 通过公网或跨网段 SSH 连接目标服务器。此时若需同步数据,必须借助一台具备双向网络能力的跳板机(Jump Host)作为中转节点——它一端可访问源服务器(如宝塔所在生产机),另一端可访问目标服务器(如备份机房内的接收端)。整个过程不暴露源/目标直连路径,也不依赖公网,符合高安全场景要求。
明确角色与网络拓扑
先理清三台机器的定位和连通性:
- 源服务器:运行宝塔面板,有数据要同步(如 /www/wwwroot/),能 SSH 连接到跳板机;
-
跳板机:Linux 主机,同时可 SSH 登录源服务器(
ssh user@src)和目标服务器(ssh user@dst),但源与目标之间 完全不可达; - 目标服务器:位于高安全内网,只接受跳板机的连接,禁止任何外部直连。
配置跳板机 SSH 代理转发(关键步骤)
让 rsync 命令“经由跳板机”抵达目标,无需在源服务器上存储目标服务器的密钥,也不暴露目标地址给源端。
- 在源服务器上编辑
~/.ssh/config(或/root/.ssh/config),添加如下配置:
Host dst-via-jump
HostName 目标服务器内网IP
User root
ProxyJump jump-host
IdentityFile ~/.ssh/id_rsa_dst # 可选:单独为目标生成的密钥- 同时确保跳板机
jump-host已定义(例如:Host jump-host\n HostName 跳板机IP\n User jump-user); - 将目标服务器公钥提前部署到跳板机的
~jump-user/.ssh/authorized_keys,并验证ssh jump-user@jump-host -o "ProxyCommand=none" ssh root@dst-ip是否能通; - 该配置启用 SSH 的
ProxyJump功能(OpenSSH 7.3+),比传统ProxyCommand ssh -W更简洁可靠。
在源服务器执行带跳转的 rsync 命令
rsync 本身不感知跳板,但可通过 -e 参数指定自定义 SSH 命令,把跳板逻辑注入进去:
- 基础推送命令示例(同步 /www/wwwroot 到目标机 /backup/site):
rsync -avz --delete -e 'ssh -F ~/.ssh/config' /www/wwwroot/ dst-via-jump:/backup/site/
-
-e 'ssh -F ~/.ssh/config'告诉 rsync 使用你配置好的跳转规则; - 末尾斜杠
/www/wwwroot/表示同步目录内容,而非目录本身; - 全程加密传输,所有流量经跳板机中转,源服务器看不到目标真实 IP 和认证凭据。
增强安全性与自动化适配
高安全环境需规避临时凭证泄露和手动干预:
- 禁用密码登录:源→跳板、跳板→目标均强制使用密钥对,且跳板机上的私钥应设
chmod 600并避免 root 共享; - 限制跳板机权限:为跳板机上的中转用户(如
rsync-jump)配置ForceCommand或restrictshell,仅允许 rsync 相关命令; - 日志与审计:在跳板机
/etc/ssh/sshd_config中开启LogLevel VERBOSE,记录连接来源与命令; - 接入宝塔计划任务:将上述 rsync 命令写入脚本(如
/www/secure-sync.sh),赋予执行权限,在宝塔「计划任务」中设置周期执行,并重定向输出至安全日志路径(如> /www/logs/rsync-jump.log 2>&1)。











