Git提交时,GPG验证失败。

6

我在本地机器上设置了gpg,大部分时间都能正常工作。但有时提交需要约一分钟的时间,然后失败。当我提交某些内容时,只会得到以下输出:

gpg: DBG: Not using CREATE_BREAKAWAY_FROM_JOB flag
gpg: can't connect to the agent: IPC connect call failed
gpg: keydb_search failed: No agent running
gpg: skipped "<mykeyid>": No agent running
gpg: signing failed: No agent running
error: gpg failed to sign the data
fatal: failed to write commit object

所以我想也许没有正在运行的gpg代理,于是我启动了一个:

>gpg-agent --daemon --verbose
gpg-agent: a gpg-agent is already running - not starting a new one

有人在不同的帖子中建议,可能是我的gpg版本不匹配或针对不同的安装目标:

>gpg --version
gpg (GnuPG) 2.2.23-unknown
libgcrypt 1.8.7

>gpg-agent --version
gpg-agent (GnuPG) 2.2.23-unknown
libgcrypt 1.8.7

所以版本似乎是相同的,安装目录也似乎没问题:

>which gpg
/usr/bin/gpg

>which gpg-agent
/usr/bin/gpg-agent

更多信息:我正在运行Windows 10,使用gpg4win 3.1.16,在Sublime Merge或Git CLI中提交。

>gpg --list-keys --keyid-format LONG
/c/Users/micha/.gnupg/pubring.kbx
---------------------------------
pub   ed25519/<mykeyid> 2021-03-02 [SCA] [expires: 2023-03-02]
      <someotherid>
uid                 [ unknown] <mymail1>
uid                 [ unknown] <mymail2>
sub   cv25519/<someotherid> 2021-03-02 [E] [expires: 2023-03-02]

提交和代理是否在同一用户帐户下运行? - knittl
1个回答

1

我猜这是因为你的密钥不受信任。默认情况下,GPG不使用不受信任的密钥。

解决方案#1:编辑密钥信任

您可以使用trust命令编辑密钥:

gpg --edit-key <fingerprint>

Secret key is available.

sec  rsa4096/****************
     created: 2022-10-24  expires: never       usage: SC  
     trust: unknown       validity: full
ssb  rsa4096/****************
     created: 2022-10-24  expires: never       usage: E   
[  unknown  ] (1). John Doe (Test Key) <john_doe@example.com>

gpg> trust

Please decide how far you trust this user to correctly verify other users' keys
(by looking at passports, checking fingerprints from different sources, etc.)

  1 = I don't know or won't say
  2 = I do NOT trust
  3 = I trust marginally
  4 = I trust fully
  5 = I trust ultimately
  m = back to the main menu

Your decision?

4

解决方案 #2:签署密钥

当您使用最终信任的密钥签署密钥时,其信任级别会自动设置为full

gpg --sign-key <fingerprint>

请注意,此操作会为另一个人的密钥创建一个可导出的签名。如果您不真正信任该人,则不建议这样做。
希望能有所帮助!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接