当前位置: 首页 > 知识库问答 >
问题:

git-gpg到mac osx上:错误:gpg对数据签名失败

法镜
2023-03-14

我从brew安装了GPG。

brew install gpg

它是gnupg2-2.0。30_2。

当我提交时,确实会收到一条错误消息:

You need a passphrase to unlock the secret key for
user: "Max Mustermann (mycomment) <mm@test.de>"
2048-bit RSA key, ID 1111AAAA, created 2017-01-05 

error: gpg failed to sign the data
fatal: failed to write commit object

我使用命令:

gpg --list-secret-keys | grep ^sec

它给了我:

sec   2048R/1111AAAA 2017-01-05

然后我使用了这个命令:

git config --global user.signingkey 1111AAAA

提交会返回相同的错误消息。

我怎样才能解决这个问题?

共有3个答案

梁昊天
2023-03-14

我收到了相同的错误消息,发现我的密钥已过期。因此,最好使用以下方法检查密钥过期:

gpg列表键

如果您的密钥也已过期,您可以通过以下方式调整过期日期:

gpg编辑密钥

然后:

gpg> expire
...enter the new expiration date...
gpg> save
傅经业
2023-03-14

对于在MacOS机器上遇到此问题的任何人,请尝试以下方法:

  1. brew卸载gpg
  2. brew安装gpg2
  3. brew安装pinentry mac(如果需要)
  4. gpg——完全生成密钥使用算法创建密钥
  5. 通过执行以下命令获取生成的密钥:gpg--list key
  6. 在这里设置键git config--global user。签名键

如果问题仍然存在:

test-r~/。bash_剖面图

echo'export GPG_TTY=$(TTY)'

如果问题仍然存在:

安装https://gpgtools.org,并在菜单栏中按下签名键:键-

如果问题仍然存在:

去:‎⁨您的全局。gitconfig文件,在我的情况下,该文件位于:‎⁨<代码>/Users/gent/。gitconfig并修改。gitconfig文件(请确保电子邮件和名称与生成密钥时创建的相同):

[user]
	email = gent@youremail.com
	name = Gent
	signingkey = <YOURKEY>
[gpg]
	program = /usr/local/bin/gpg
[commit]
	gpsign = true
	gpgsign = true
[filter "lfs"]
	process = git-lfs filter-process
	required = true
	clean = git-lfs clean -- %f
	smudge = git-lfs smudge -- %f
[credential]
	helper = osxkeychain

侯博易
2023-03-14

如果你根本没有收到提示输入密码,解决方案可能只是安装一个程序来促进这一点。最常见的是平移。

brew install pinentry-mac

因此,安装并重试可能会使事情正常进行。但如果没有,另一件事是确保使用/找到正确的GPG程序gitit。现在你真的应该使用gpg2,所以如果你还没有安装,请执行以下操作:

brew install gnupg2

然后,要告诉git这就是GPG程序想要你做的,这个:

git config --global gpg.program gpg2

在这一点上,再次尝试你的提交,事情可能会顺利进行。

但如果没有,请尝试以下方法:

echo "pinentry-program /usr/local/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf

……或者更有力地说:

echo "pinentry-program $(which pinentry-mac)" >> ~/.gnupg/gpg-agent.conf

…然后再试一次。

而且你可能还需要停止gpg-agent

gpgconf --kill gpg-agent

您不需要手动重新启动它-它将在需要时自动重新启动。

注意:下面的一些评论提到在进行更改后需要重新启动-

 类似资料:
  • 我有麻烦签署提交。使用以下git配置: 我被告知只包含密钥的前八个字符。 分阶段后,在,我收到以下错误: 似乎大多数遇到此错误的用户都在Mac电脑上,需要进行一些额外的设置。但我在使用Kali Linux。 有什么建议吗?

  • 2048位RSA密钥,ID AAAAAAA,创建于2016-07-01 错误:gpg无法对数据签名致命:无法写入提交对象 注意-我仍然可以使用提交更改

  • 我有一个全新的Linux Mint14安装。已安装Thunderbird&Enigmail。 我试着删除我的密钥并重新移植它。我试着改变各种设置。但我想不出问题出在哪里。我以前使用过Linux/Thunderbird/Enigmail,从来没有出现过这个错误。

  • GPG 无法签名数据 如果当你在对 tag 或者 commit 签名时遇到以下提示: error: gpg failed to sign the data error: unable to sign the tag 首先,物理插拔一下 Yubikey 并确保安全卡状态可以被正确的列出: ❯ gpg --card-status 如果你看到: PIN retry counter : 0 0 3 这意味

  • 正在签署的摘要到底是什么?如果签名嵌入到提交对象中,那么它很难是提交哈希本身-那么它是树哈希吗?还是别的什么?这是否意味着提交消息没有签名并且可能被篡改? 注意:我在这里使用一个用--object-type sha256初始化的git存储库来使用基于SHA-256的哈希值(默认情况下git使用SHA-1),但我的问题也适用于带有SHA-1哈希值的git存储库(以防gpg签名对SHA-1和SHA-2