在github开启gpg的几个Q&A

2018/07/25

本文不是解释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

成功!

参考: