Windows 使用 Rclone SFTP 免密增量同步 Linux 服务器

公開日: 2026-06-24 00:00 1534文字 8 min read

この投稿は「日本語」では表示できません。元の投稿を表示しています。
详细记录 Windows 使用 rclone 通过 SFTP 协议免密增量同步文件到 Linux 服务器的完整配置流程,包含 SSH 密钥生成、公钥授权、两种 rclone 使用方案及常见故障排查。
Windows 与 Linux 文件同步示意图
Windows 与 Linux 文件同步示意图

一、环境说明

  1. 客户端:Windows 10/11,自带 OpenSSH 客户端
  2. 同步工具:rclone(单文件绿色程序,无需复杂环境依赖)
  3. 服务端:Linux(Debian/CentOS 通用),默认开启 SSH 22 端口,内置 SFTP 服务
  4. 同步方式:SSH 密钥免密登录,无需输入密码;增量对比文件,仅传输变更内容,支持删除远端冗余文件

二、Windows 端前置准备:生成 SSH 密钥对

1. 确认 OpenSSH 可用

打开 PowerShell 执行:

ssh -V

提示:若提示找不到命令,前往 设置 → 应用 → 可选功能,安装「OpenSSH 客户端」。

2. 生成 ED25519 密钥

执行命令,全程直接回车,不设置密钥密码(保证自动化无弹窗):

ssh-keygen -t ed25519
  • 私钥存放路径C:\Users\本地管理员账号\.ssh\id_ed25519(本地保留,严禁泄露)
  • 公钥存放路径C:\Users\本地管理员账号\.ssh\id_ed25519.pub(上传至服务器授权)
SSH 密钥对原理示意图
SSH 密钥对原理示意图

3. 收紧 Windows 私钥权限(SSH 强制校验)

管理员身份打开 PowerShell 执行:

icacls "C:\Users\本地管理员账号\.ssh\id_ed25519" /inheritance:r
icacls "C:\Users\本地管理员账号\.ssh\id_ed25519" /grant 本地管理员账号:(R)

三、服务器配置:公钥授权免密登录

公钥授权免密登录流程图
公钥授权免密登录流程图

1. 将本地公钥写入服务器授权文件

PowerShell 执行,输入一次服务器登录密码完成授权:

type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh root@服务器公网IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"

2. 首次连接信任服务器指纹

执行 SSH 登录命令,输入 yes 保存主机指纹,避免 rclone 执行时弹窗阻塞自动化:

ssh root@服务器公网IP

3. 验证免密登录

重新执行 SSH 连接,无需输入密码直接进入服务器终端即配置成功。

4. 服务器 SSH 配置校验(密钥登录异常时使用)

登录 Linux 服务器,编辑 ssh 配置文件:

nano /etc/ssh/sshd_config

确保以下参数开启:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

修改完成后重启 SSH 服务:

systemctl restart sshd

四、Windows 安装与配置 rclone

1. 下载安装

  1. 官网下载 Windows 64 位 rclone 压缩包,解压得到 rclone.exe
  2. 将程序放入固定目录,例如 C:\Tools\rclone\
  3. 把该目录添加到系统环境变量 Path,重启终端生效

2. 验证安装

PowerShell 执行输出版本号即正常:

rclone version

五、两种 rclone 使用方案(无需 rclone config 配置文件)

Rclone 增量同步原理示意图
Rclone 增量同步原理示意图

方案 1:单行命令直接携带全部连接参数(推荐自动化脚本)

无需提前执行 rclone config,所有 SFTP 连接参数写在命令内,可直接在终端 / AI 工作工具一键执行。

基础增量同步模板

rclone sync D:\本地同步目录 :sftp:/服务器远程目录 `
    --sftp-host 服务器公网IP `
    --sftp-user 服务器登录用户名 `
    --sftp-key-file "C:\Users\本地管理员账号\.ssh\id_ed25519" `
    --delete `
    --progress `
    --transfers 8

核心参数说明

参数作用
sync镜像同步,让远端目录与本地完全一致
--delete删除服务器存在、本地已删除的冗余文件
--progress实时打印同步进度、传输速度
--transfers 8并发传输文件数量,提升小文件同步速度
--sftp-host服务器公网地址
--sftp-userLinux 登录账号(一般为 root)
--sftp-key-fileWindows 本地私钥完整路径

安全预览模式(—dry-run)

执行后仅打印将要上传 / 删除的文件,不真实修改服务器数据,上线前必测:

rclone sync D:\本地同步目录 :sftp:/服务器远程目录 `
    --sftp-host 服务器公网IP `
    --sftp-user 服务器登录用户名 `
    --sftp-key-file "C:\Users\本地管理员账号\.ssh\id_ed25519" `
    --delete `
    --dry-run

扩展可选参数

  • --checksum:使用 MD5 哈希校验文件,不受时区、文件修改时间误差影响,精准增量
  • --exclude="*.map":过滤指定后缀文件,不参与同步
  • --bwlimit 5M:限制传输带宽,避免占用全部网络

方案 2:交互式 rclone config 持久化远端(手动固定设备长期使用)

两种 Rclone 使用方案对比
两种 Rclone 使用方案对比

1. PowerShell 执行配置命令

rclone config

2. 交互流程

  • 输入 n 新建远程存储
  • 自定义远程名称(如 sftp-data
  • 存储类型输入 sftp
  • host:服务器公网 IP
  • user:服务器登录账号
  • key_file:本地私钥完整路径
  • 其余选项直接回车默认,保存配置退出

3. 同步简化命令

rclone sync D:\本地同步目录 sftp-data:/服务器远程目录 --delete --progress

六、配套常用辅助命令

1. 查看服务器远端目录文件列表

rclone ls ":sftp:/服务器远程目录" `
--sftp-host 服务器公网IP `
--sftp-user 服务器登录用户名 `
--sftp-key-file "C:\Users\本地管理员账号\.ssh\id_ed25519"

2. 仅同步,不执行本地文件构建(纯文件传输)

使用方案 1 基础同步命令即可。

七、常见故障排查

常见故障排查导图
常见故障排查导图

问题 1:SSH 连接仍提示输入密码

  • 服务器 .ssh/authorized_keys 权限非 600,重新执行公钥推送命令;
  • 本地私钥权限过高,执行私钥权限收紧命令;
  • sshd 未开启公钥认证,修改 sshd_config 并重启服务。

问题 2:rclone 提示主机未知

手动执行一次 ssh root@服务器公网IP,输入 yes 保存服务器指纹。

问题 3:rclone 提示找不到命令

rclone 目录未添加系统环境变量,关闭所有终端重新打开。

问题 4:同步后服务器文件无读取权限

SSH 远程执行权限修复命令:

ssh -i "C:\Users\本地管理员账号\.ssh\id_ed25519" root@服务器公网IP "chown -R 网站运行用户:网站运行用户 /服务器远程目录 && chmod -R 755 /服务器远程目录"