-1

添加了一个 gpg 密钥来签署提交。

完成所有配置后,我可以通过 git cli 进行签名。

但是当我使用 vscode 提交时,它会打开一个终端窗口,这样我就可以输入我的密钥密码。该窗口出现了一些错误并且不接受密码并在 vscode 中返回错误:

error: gpg failed to sign the data

当我重新启动 gpg-agent 并设法通过 cli 提交时。

当我通过cli输入密码时,它存储在终端的那个部分,我设法通过vscode提交。当您关闭该部分时,错误会返回。

我在 linux Ubuntu 20 上使用 wsl2

4

2 回答 2

0

我猜你的问题是:

  • 您从未启动 gpg-agent 的环境启动 VSCode,因此 VSCode 无权访问指示如何访问 gpg-agent 的环境变量
  • 当您从 VSCode 中打开的终端启动 gpg-agent 时,它会更新该终端的环境(每个终端都是一个单独的进程),但不会更新 IDE 或其他终端

要确认拥有正确的环境,您可以尝试以下操作:

  • 关闭所有正在运行的 VSCode 实例
  • 打开一个新的终端(无论您使用什么外壳:bash、powershell、cmd.exe ...)
  • 从那个终端,启动你的 gpg-agent
  • 从同一个终端,从命令行启动 VSCode
  • 检查您是否仍然有从该 VSCode 实例提交的问题

您可以在启动 gpg-agent 之前和之后检查环境以确认变量确实得到了更新(在 bash 中,这只是意味着运行envenv | sort从命令行运行)。

于 2021-08-31T12:01:12.960 回答
0

我找到了解决方案...

所需步骤:

从https://www.gpg4win.org安装 GPG4Win 。除了默认的 gnupg 之外什么都不需要,但我也安装了 Kleopatra,以防它在其他地方派上用场。

编辑 ~/.gnupg/gpg-agent.conf 并更改 pinentry

pinentry-program "/mnt/c/Program Files (x86)/GnuPG/bin/pinentry-basic.exe"

于 2021-09-04T11:33:41.013 回答