You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GPG不使用gpg-connect-agent列出的密钥 Windows PGP密钥共享至WSL2问题

GPG 与 gpg-connect-agent 的关联关系

二者是 GnuPG 体系下职责完全独立的两个组件:

  • gpg 是 GnuPG 主程序,负责核心业务逻辑处理:包括本地公钥/私钥环的读写、加密/解密/签名的流程计算、密钥元数据(用户ID、过期时间、信任等级)的管理,所有和密钥业务相关的判断都由 gpg 完成。
  • gpg-connect-agent 是专门和 gpg-agent 通信的交互工具,仅负责对接 gpg-agent 进程,不会读取 gpg 的本地密钥环文件。你通过该工具查询到的密钥,是 gpg-agent 缓存在内存中的私钥指纹,仅能证明 WSL 端的 agent 套接字已经正常对接上 Windows 端的 gpg-agent,不代表 gpg 本身可以识别这些密钥。
问题产生的原因

你当前的配置仅完成了 gpg-agent 套接字的跨系统转发,缺失了公钥环同步步骤,因此出现该异常:

  • gpg 执行 gpg --list-keys 时,只会读取本地 ~/.gnupg/pubring.kbx(旧版本为 pubring.gpg)文件中的公钥信息,不会主动从 gpg-agent 拉取公钥数据。
  • 执行签名操作时,gpg 首先要从本地公钥环中找到对应邮箱的公钥条目,确认存在关联的私钥后,才会调用 gpg-agent 执行私钥签名操作;找不到公钥条目时会直接返回 No secret key 错误,和 gpg-agent 中是否缓存了私钥无关。
修复方案
  1. 在 Windows 端的命令行工具中执行 gpg --export --armor > all_pubkeys.asc,导出所有 GPG 公钥
  2. 将导出的 all_pubkeys.asc 文件拷贝到 WSL 的 Ubuntu 系统中,执行 gpg --import all_pubkeys.asc 导入公钥到本地公钥环
  3. 导入完成后执行 gpg --list-keys 即可看到所有密钥,此时再执行签名操作就能正常调用 Windows 端的 gpg-agent 完成操作
  4. 后续如果 Windows 端新增密钥,重复上述导出导入步骤同步公钥即可,无需修改套接字转发配置。

内容的提问来源于stack exchange,提问作者Claudio Weiler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:54:03