rsync over SSH 是什么
把 rsync 的传输通道换成 SSH:只要目标主机开了 22 端口,就能把文件同步过去,不需要额外开放 rsync 守护进程端口或配置模块。配合密钥认证可以在脚本里无人值守运行,是跨主机、跨机房备份最常见的一种组合。
基本信息
| 传输通道 | SSH,默认作为远程 shell 使用 |
|---|---|
| 认证方式 | 建议使用专用密钥,并限制来源与允许命令 |
| 优势 | 不额外开端口、加密与身份校验复用系统 sshd |
| 代价 | 加密与握手有开销,海量小文件时更明显 |
免密配置与传输
免密配置与传输
ssh-keygen -t ed25519 -f ~/.ssh/backup_key -N "" # 生成专用密钥
ssh-copy-id -i ~/.ssh/backup_key.pub backup@10.0.0.5 # 分发公钥
rsync -av -e "ssh -i ~/.ssh/backup_key" /data/ backup@10.0.0.5:/backup/data/
# 无人值守脚本加上 BatchMode 避免交互提问卡住任务
rsync -av -e "ssh -i ~/.ssh/backup_key -o BatchMode=yes" /data/ backup@10.0.0.5:/backup/data/加固要点
| 要点 | 做法 |
|---|---|
| 专用账号 | 为备份单独建账号,不与其他运维用途共用 |
| 限制来源 | 在 authorized_keys 中限定来源地址 |
| 限制命令 | 用 command 前缀限定只允许接收 rsync 请求 |
| 禁用转发 | 关闭端口与代理转发,缩小密钥泄露后的影响面 |
典型使用场景
- 推送到备份服务器:源端主动推送,备份端只需开放 22 端口
- 从异地拉取:备份端主动拉取数据,生产侧不需要向外开权限
- 跨机房同步:经跳板机做端口转发后再同步,链路全程加密
- 云主机与本地互联:不额外暴露服务端口,复用已有的 SSH 管理通道
- 多主机汇聚:各业务机用各自的密钥推送到统一备份池,按主机名分目录
备份密钥不设口令又无来源限制时,私钥泄露等于备份服务器失守;专用账号应限定来源地址与允许执行的命令,并定期轮换密钥。
首次连接需要确认主机指纹,无人值守任务会因此挂起;应事先写入 known_hosts 或配置好严格校验策略,而不是在脚本里简单关闭校验。