rclone crypt 加密备份:配置文件里那串"乱码"密码,一条命令就能还原

举报
赛博大妈 发表于 2026/11/07 09:23:31 2026/11/07
【摘要】 用 rclone 的 crypt 把服务器上的配置和数据库加密后同步到网盘,记录了完整步骤和验证方法。重点是一个容易误解的地方:rclone.conf 里 obscure 过的密码只是混淆,不是加密,rclone reveal 一条命令就能还原。想保护它,要给配置文件本身再加一层密码。另外用 --backup-dir 防止 sync 把误删同步过去。

如果有人拿到了你的 rclone.conf,他能不能解开你网盘里的加密备份?

第一反应是不能,配置文件里的 password 是一串看不懂的字符。测了一下,答案是能,而且很快。

先交代环境:下面的过程先在一台 Debian 测试机上跑过,rclone v1.75.2。为了不依赖真实网盘,测试里的"网盘"是一个本地目录(remote 名叫 box,类型 local),crypt 叠在它上面,原理和接真实网盘一样。

crypt 是怎么叠上去的

rclone 的加密不是独立的存储,而是包在另一个 remote 外面的一层。配置大概是这样:

[box]
type = local

[secret]
type = crypt
remote = box:/srv/rc-lab/dst
password = (obscure 过的值)
password2 = (obscure 过的值)

往 secret: 写东西,rclone 先加密,再写到 box 的那个目录里。password2 是盐,可以不设,建议设上。

正常应该用 rclone config 交互式创建,它会帮你把密码 obscure 好。我一开始图快,直接手写了明文:

报错很明确:failed to decrypt password: input too short when revealing password - is it obscured? 配置里的密码必须是 obscure 过的形式。手写的话先 rclone obscure 你的密码,把输出贴进去。

同步、看效果、校验

rclone sync src secret:vps1 -v

src 里放了三个文件:一个 jail.local、一个 300000 字节的 komari.db、一个 notes.txt。

直接看 box 底下,文件名和目录名全加密了,komari.db 变成了 300112 字节,多出的 112 字节是加密的文件头(32 字节)加上每 64KB 一块的校验(5 块 × 16 字节)。通过 secret: 去看,就是原来的名字和大小。

验证备份对不对,用 rclone cryptcheck,它会拿本地文件按同样的方式算校验和,和远端加密后的比。输出 0 differences found、3 matching files 就是一致的。

普通的 rclone check 对 crypt 不太好使,因为远端存的是密文,哈希对不上,这也是 cryptcheck 存在的原因。

sync 会删东西

sync 的意思是让目标和源一模一样。源里删了文件,目标里也会删。

服务器上误删了一个文件,几分钟后定时任务一跑,网盘里的备份也没了。这不是备份,是镜像。

所以先 --dry-run 看看会删什么,然后加上 --backup-dir,被删或被覆盖的文件先挪过去:

测试时删掉了 notes.txt。dry-run 里能看到 Skipped delete,说明真跑会删。加上 --backup-dir secret:old/2026-11-01 再跑,日志是 Moved into backup dir,去 secret:old 下面能找到它。

backup-dir 要和目标在同一个 remote 上,而且不能互相包含,所以我用的是 secret:old,和 secret:vps1 并列。目录名带日期,每天一个,过段时间手动清理旧的。

重点:obscure 不是加密

回到开头那个问题。配置文件里的 password 看着像乱码,但 rclone 自己就能把它还原:

rclone reveal 后面跟那串值,明文密码直接出来。这是设计如此,官方文档也说了 obscure 只是防止别人瞄一眼就记住,不是安全措施。

这意味着:rclone.conf 泄露 = 加密密码泄露 = 网盘里的备份能被解开。而这个文件很容易被带出去,比如整机打包备份时连它一起传上网盘,或者排查问题时把配置贴给别人看。

给配置文件再加一层

rclone 支持把整个配置文件加密:

rclone config encryption set

它会让你输入一个配置密码。测试时为了能截图,我用 RCLONE_PASSWORD_COMMAND 从一个文件里读密码:

加密后的文件开头是 RCLONE_ENCRYPT_V0:,后面是一整块密文,里面的 remote、密码都看不到了。不给配置密码再运行 rclone,会卡在 Enter configuration password 然后报 Failed to read line: EOF。带上 --password-command,一切照常。

定时任务里怎么办?总得有个地方放配置密码。可以放在只有 root 能读的文件里(chmod 600),定时任务用 --password-command "cat /root/.rclone-pass" 读。

说实话,密码文件和配置文件在同一台机器上,机器整个被拿下的话这层没用。它防的是另一种更常见的情况:配置文件单独被带出去了。为了这个,多一个文件值得。

别忘了的两件事

crypt 的 password 和 password2 一定要另外存一份,存在这台服务器以外的地方。服务器没了、配置文件没了,网盘里的备份就是一堆打不开的文件,rclone 也帮不了你。

再就是恢复演练。备份做好以后,挑个时间在另一台机器上,只用你另存的那两个密码重新建一个 crypt remote,rclone copy 拉一个文件下来打开看看。这一步做过一次,才算真有备份。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。