跳转到内容

客户端加密与密钥管理 ​

PBS 支持客户端加密:数据在离开客户机之前就用 AES-256-GCM 加密好,连 PBS 服务器本身都看不到明文。这对"目标不完全可信"的场景(异地机房、云主机、第三方托管)特别有用。但这个功能带来一个后果,必须在开启之前就搞清楚。

加密密钥丢了,备份就是一堆无法解密的数据

这不是夸张的说法。官方文档原话:"没有密钥,已备份的文件将无法访问。"PBS 服务端不保存明文密钥,没有后门,开发者自己也无法帮你恢复。

最常见的翻车场景:把加密密钥和它保护的数据放在同一台机器上——这台机器本身报废时,密钥跟着一起没了,形同给自己上了一把永远打不开的锁。

这篇后面会给出至少三份密钥备份的具体做法,应该在生成密钥的当天就做完,而不是"以后有空再说"。

密钥是怎么工作的 ​

proxmox-backup-client key create 生成一把 AES 密钥,默认要求密码保护(--kdf none 可以跳过密码,但不推荐这么做,密钥文件泄露就等于数据泄露)。加密备份时用 --keyfile 指定这把密钥;不指定的话,客户端默认从 ~/.config/proxmox-backup/encryption-key.json 读取。配置了密钥之后,恢复时会先校验备份清单(manifest)的签名,防止数据被篡改。

在 PVE 里添加 PBS 存储时,encryption-key 选项能直接配置:填 autogen 自动生成一把,密钥会存在 /etc/pve/priv/storage/<存储ID>.enc;也可以手动生成后指定路径。

主密钥(Master Key):唯一正经的恢复手段 ​

主密钥是一对 RSA 公私钥。流程大致是:

  1. proxmox-backup-client key create-master-key 生成 master-public.pem 和 master-private.pem。
  2. proxmox-backup-client key import-master-pubkey 导入公钥,之后每次备份都会在里面额外存一份用这把公钥加密过的密钥副本(rsa-encrypted.key)。
  3. 真的丢了密钥:从任意一份带 rsa-encrypted.key 的备份里取出这个文件,配合 master-private.pem 运行 key import-with-master-key,输入主密钥的密码,就能拿到一把可用的新密钥文件。

主密钥本身也要备份,它是最后一道保险

主密钥的私钥(master-private.pem)加上它的密码,是整套体系里最关键的一份东西。它没了,"从任意一份备份里恢复密钥"这条路也就断了——所以主密钥私钥的备份要求和下面讲的普通密钥一样严格,甚至更高。

密钥要放在哪三个地方 ​

位置用途注意事项
密码管理器日常快速恢复和你其他所有密码一样管理,注意访问权限
U 盘或其他离线存储脱离网络的一份存放在别处,不要和服务器插在一起
纸质备份应对"数字介质也一起没了"的极端情况proxmox-backup-client key paperkey --output-format text > qrkey.txt 生成带二维码的可打印版本,打印后锁进保险柜或文件柜

纸质备份不是复古情怀

数字介质(U 盘、密码管理器的云同步)在"整个数字环境都出问题"的极端场景里(比如账号被攻破、本地设备被勒索软件加密)可能同时失效。一张纸不会被勒索软件加密,也不需要通电才能读。

检查结果:验证密钥真的能用 ​

不要等出事才第一次尝试恢复密钥,提前演练:

  1. 用当前的主密钥,从一份已有的加密备份里取出 rsa-encrypted.key。
  2. 在另一台机器或另一个目录上运行 key import-with-master-key,确认能顺利拿到一把可用的密钥文件。
  3. 用恢复出来的这把密钥,实际做一次 单文件恢复 或小规模恢复,确认数据确实能正常解密出来。

这个验证也应该像 恢复演练 一样定期做,而不是只在创建密钥那天做一次。

密码忘了,但主密钥还在 ​

如果只是忘了加密密钥本身的密码(密钥文件还在),走主密钥恢复流程同样能解决——恢复过程会要求你重新设一个新密码。真正无解的情况是密钥文件和主密钥私钥都没了。

要不要开客户端加密 ​

  • 备份目标是你完全信任、物理上能掌控的本地 PBS:可以不开,省去密钥管理这项额外的运维负担。
  • 备份要发到异地机房、云主机,或者任何你不能百分之百信任物理安全的地方:应该开,这是"数据能安全存放在不完全受信介质上"的前提,见 异地副本。

常见问题 ​

用 --kdf none 生成的密钥没设密码,安全吗? 密钥文件本身一旦泄露就等于数据泄露,需要靠文件系统权限严格保护这个文件,一般不建议这么做。

加密的备份能在 PVE 的 File Restore 里用吗? 能,前提是执行恢复的这一侧能拿到对应的密钥,见 单文件恢复。

同步任务(sync job)会怎么处理加密的备份? pull 方向可以用关联的密钥解密后重新落地;push 方向也支持用服务端配置的密钥,把还没加密的快照在发送前就地加密,已经加密的原样传输,部分加密的会被跳过,详见 异地副本。

参考资料 ​

Proxmox VE 非官方中文使用指南,与 Proxmox Server Solutions GmbH 无隶属关系。