WSL10中Pass密码管理器报gpg解密失败:No secret key求助
解决WSL中Pass密码管理器解密失败(No secret key)的问题
我之前在Windows 10的WSL环境里折腾Pass+GPG的时候,也碰到过完全一样的「gpg: decryption failed: No secret key」报错,给你几个亲测有效的排查和解决步骤:
确认GPG私钥在WSL中正常识别
先运行gpg --list-secret-keys,查看你的主密钥是否出现在列表里。如果没有显示,大概率是WSL环境没正确加载私钥:- 你可以从Windows的GPG目录(一般是
/mnt/c/Users/你的Windows用户名/AppData/Roaming/gnupg/)复制私钥相关文件(比如private-keys-v1.d文件夹或者secring.gpg)到WSL的~/.gnupg/目录下 - 然后执行
gpg --import 私钥文件名(如果是文件夹直接复制的话,可能需要重新刷新密钥:gpg --refresh-keys) - 再次运行
gpg --list-secret-keys确认密钥已加载
- 你可以从Windows的GPG目录(一般是
检查GPG Agent环境变量与启动状态
WSL里GPG Agent的socket路径经常出问题,先运行echo $GPG_AGENT_INFO,如果没有输出,手动启动并配置环境变量:gpg-agent --daemon --write-env-file ~/.gpg-agent-info source ~/.gpg-agent-info export GPG_AGENT_INFO可以把这几行添加到
~/.bashrc或~/.zshrc中,让每次终端启动时自动加载。验证Pass与GPG密钥的关联
运行pass init查看当前Pass绑定的密钥ID是否和你的主密钥一致。如果不匹配,重新初始化Pass:pass init 你的主密钥ID密钥ID可以从
gpg --list-secret-keys的输出中获取(通常是长ID的后8位)。修复GPG目录的权限问题
GPG对~/.gnupg/目录的权限要求非常严格,必须是仅当前用户可读写:chmod -R 700 ~/.gnupg/ chmod 600 ~/.gnupg/*WSL偶尔会出现权限继承混乱的情况,这一步能解决很多隐性问题。
强制重启GPG Agent并加载配置
杀掉现有Agent进程后,用指定配置重启:pkill gpg-agent gpg-agent --daemon --pinentry-program /usr/bin/pinentry-curses --allow-loopback-pinentry --default-cache-ttl 28800这样会直接加载你之前配置的缓存时间和pinentry程序。
一般按这个顺序排查,就能解决WSL里Pass+GPG的解密问题。
内容的提问来源于stack exchange,提问作者Suji
相关产品推荐
相关产品推荐

