👻

pinentryを用いたGitのGPG署名ができなくなった際の対処法

2023/11/08に公開

自分はpinentry-macpinentry-touchidを利用して git commit 時にGPG署名を行っているのだが、ある日から突然エラーが出るようになってしまった。

❯ git commit -m "hoge"
error: gpg failed to sign the data:
[GNUPG:] KEY_CONSIDERED *** *
[GNUPG:] BEGIN_SIGNING H10
gpg: signing failed: No pinentry
[GNUPG:] FAILURE sign ***
gpg: signing failed: No pinentry

fatal: failed to write commit object

No pinentry と言われているので、パス関連かなとあたりをつけて ~/.gnupg/gpg-agent.conf を見てみると案の定存在しないパスを指していたので、それぞれ which して以下のように正しいパスを設定しなおした。

pinentry-program /opt/homebrew/bin/pinentry-mac
pinentry-program /opt/homebrew/bin/pinentry-touchid

最後に gpg-agent を一度殺せば解決。ただしく署名したcommitができるようになる。

gpgconf --kill gpg-agent

Discussion