GPG 签名不使用来自 gpg-connect-agent 的密钥

GPG sign not using keys from gpg-connect-agent

我正在尝试使用 Ubuntu 20.04 将 PGP 密钥从 Windows 10 共享到 WSL 2。

我正在使用这个工具:https://github.com/BlackReloaded/wsl2-ssh-pageant

我目前的情况是 gpg-connect-agent 'keyinfo --list' /bye 列出了我所有的 Windows GPG 密钥,但是 gpg --list-keys 返回了一个空列表。

$ gpg-connect-agent 'keyinfo --list' /bye
S KEYINFO 9BD09C... D - - - P - - -
S KEYINFO BBF58D... D - - - P - - -
S KEYINFO D62ED0... D - - - P - - -
OK

签名尝试失败 'No secret key',但我认为这是预料之中的,因为 gpg --list-keys 是空的:echo "test" | gpg --sign -u mail@none.com

任何线索为什么会发生这种情况?

gpg和gpg-connect-agent有什么关系?

设置:

  1. 使用“wsl --shutdown”开始新的 WSL 2 会话
  2. 删除 'S.gpg-agent' 文件
  3. 使用 setsid socat UNIX-LISTEN:$GPG_AGENT_SOCK,fork EXEC:"${WSL_TOOLS}/wsl2-ssh-pageant.exe --gpg S.gpg-agent",nofork &
  4. 创建管道

您需要将 public 密钥导入 WSL。

如此处所述https://wiki.gnupg.org/AgentForwarding

It is important to note that to work properly GnuPG on the remote system still needs your public keys.

步骤:

  1. 在 Windows 上,使用 gpg --export -a 'mail@none.com' > public.key;
  2. 导出您的 public 密钥
  3. 在 WSL 上,使用 gpg --import public.key 导入您的 public 密钥。