git-crypt无法识别克隆后的加密仓库 unlock后仍无法解密文件
问题核心原因
出现这个现象的核心原因基本集中在GPG密钥配置环节,和git-crypt本身关系不大:你导入私钥后虽然能正常做GPG加解密、git提交签名,但git-crypt解密仓库内置对称密钥时,会校验密钥的信任等级,若导入的私钥没有被设置为终极信任,整个解锁流程会静默失败——不会抛明确报错,只会表现为git crypt unlock执行完无效果、所有文件被判定为未加密、打开文件仍是乱码。小概率问题是导出私钥时漏了加密子密钥、或本地仓库的git-crypt缓存状态异常。
排查修复步骤
- 先修正GPG密钥信任等级
终端执行命令进入密钥编辑交互界面:
交互界面内输入gpg --edit-key 7405D8B8BCCCEA723B3BA6615AEA60852688245Dtrust回车,在弹出的信任等级选项里选择序号对应「终极信任(ultimate)」的选项(通常为选项5),确认后输入save退出编辑即可。 - 校验私钥完整性
执行命令查看私钥详情:
确认对应密钥条目下同时带有签名能力标记gpg --list-secret-keys --keyid-format=longS和加密能力标记E。git提交签名只用到签名子密钥,而git-crypt解密必须用到加密子密钥,如果缺失加密子密钥,回到台式机执行gpg --export-secret-keys -a 7405D8B8BCCCEA723B3BA6615AEA60852688245D > full_private.key导出完整私钥,拷贝到笔记本重新导入即可。 - 重置本地仓库的git-crypt状态
进入本地Vimwiki仓库目录,清除异常缓存后重新解锁:
操作完成后执行rm -rf .git/git-crypt git checkout -- .gitattributes git crypt unlockgit crypt status,正常情况下加密文件会显示encrypted:前缀,直接读取index.md就能看到明文内容。 - 兜底校验
如果以上操作后仍异常,手动执行命令解密git-crypt存储的对称密钥,定位问题点:
若命令能正常输出二进制内容、无信任类或解密失败类报错,说明GPG侧配置正常,重新安装匹配版本的git-crypt即可;若命令报错,回到前两步重新检查密钥的信任等级和完整性。gpg -d .git-crypt/keys/default/0/7405D8B8BCCCEA723B3BA6615AEA60852688245D.gpg
内容的提问来源于stack exchange,提问作者Jon Buys
相关产品推荐
相关产品推荐

