一、环境说明
- 客户端:Windows 10/11,自带 OpenSSH 客户端
- 同步工具:rclone(单文件绿色程序,无需复杂环境依赖)
- 服务端:Linux(Debian/CentOS 通用),默认开启 SSH 22 端口,内置 SFTP 服务
- 同步方式: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(上传至服务器授权)
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. 下载安装
- 官网下载 Windows 64 位 rclone 压缩包,解压得到
rclone.exe - 将程序放入固定目录,例如
C:\Tools\rclone\ - 把该目录添加到系统环境变量
Path,重启终端生效
2. 验证安装
PowerShell 执行输出版本号即正常:
rclone version
五、两种 rclone 使用方案(无需 rclone config 配置文件)
方案 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-user | Linux 登录账号(一般为 root) |
--sftp-key-file | Windows 本地私钥完整路径 |
安全预览模式(—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 持久化远端(手动固定设备长期使用)
1. PowerShell 执行配置命令
rclone config
2. 交互流程
- 输入
n新建远程存储 - 自定义远程名称(如
sftp-data) - 存储类型输入
sftp host:服务器公网 IPuser:服务器登录账号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 /服务器远程目录"