本文不是解释 gpg 和解释 github 如何开启 gpg 的文章,仅仅记录一下我在 github 开启 gpg 的几个 Q&A
如何查看、备份与删除秘钥
查看
➜ gpg --list-keys
/Users/chyroc/.gnupg/pubring.kbx
--------------------------------
pub rsa2048 2018-07-25 [SC] [有效至:2020-07-24]
<gpg id>
uid [ 绝对 ] chyroc <xxxx@xxxx.com>
sub rsa2048 2018-07-25 [E] [有效至:2020-07-24]
备份
github 现在不支持@foxmail.com
邮箱,导致 github 不再支持我以前生成的 gpg 秘钥,所以我需要重新生成一个秘钥。
但是现在这个秘钥我已经在 pypi 中使用了,所以我需要先备份秘钥,然后再删除。
执行下面这个命令将秘钥导出到文件
gpg -o pri_key.gpg --export-secret-keys <gpg id>
gpg -o pub_key.gpg --export <gpg id>
删除
再执行下面两个命令删除
gpg --delete-secret-keys <gpg id>
gpg --delete-keys <gpg id>
如何在 github 开启 gpg
生成公钥
gpg --armor --export <gpg id>
https://github.com/settings/keys
然后将生成的公钥上传到git 开启 gpg
执行下面三个命令
git config --global user.signingkey <gpg id>
git config --global gpg.program $(which gpg)
git config --global commit.gpgsign true
解决 gpg failed to sign the data
如果 commit 的时候报错:gpg failed to sign the data
先执行
brew upgrade gnupg # This has a make step which takes a while
brew link --overwrite gnupg
brew install pinentry-mac
echo "pinentry-program /usr/local/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf
killall gpg-agent
然后再 commit
成功!