使用GPG对Github进行签名

前言

在GitHub上面我们对自己提交的commit进行签名,通过签名之后GitHub就会知道这个commit是经过签名的、可信的commit,并且会有个绿色的“Verified”显示在旁边。

主要操作是安装PGP,以macOS下为例:

安装GPG

1
brew install gpg

生成密钥

GPG版本<2.1.17

1
gpg --default-new-key-algo rsa4096 --gen-key

GPG版本>=2.1.17

1
gpg --full-generate-key

参数输入

全部都可以默认,主要是填写邮箱的时候注意填写Github账户的邮箱。

查看与导出

使用命令

1
gpg --list-secret-keys --keyid-format LONG

从 GPG 密钥列表中复制想要使用的 GPG 密钥 ID。 在此例中,GPG 密钥 ID 是 3AA5C34371567BD2:

1
2
3
4
5
6
gpg --list-secret-keys --keyid-format LONG
/Users/hubot/.gnupg/secring.gpg
------------------------------------
sec 4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]
uid Hubot
ssb 4096R/42B317FD4BA89E7A 2016-03-10

导出要使用的密钥对,以此密钥为例

1
gpg --armor --export 3AA5C34371567BD2

复制 GPG 密钥

1
2
从 -----BEGIN PGP PUBLIC KEY BLOCK----- 开始
到 -----END PGP PUBLIC KEY BLOCK----- 结束

添加密钥至 Github

在 Github 的设置中找到 SSH and GPG keys 选项,或点击链接:https://github.com/settings/keys

单击 New GPG key(新 GPG 密钥),然后粘贴上一步中复制的密钥

使用密钥

在 Git 中设置 GPG 签名密钥,记得替换为自己的 GPG 密钥 ID

1
2
3
4
5
git config --global user.signingkey 3AA5C34371567BD2
# 为当前的单个项目配置密钥认证
git config commit.gpgsign true
# 为全部项目配置密钥认证
git config --global commit.gpgsign true

错误处理

第一次commit会出现gpg无法正常签名的错误,需要安装pinentry-mac:

1
2
3
4
5
error: gpg failed to sign the data 
fatal: failed to write commit object
##################
error: gpg 无法为数据签名
fatal: 无法写提交对象

安装pinentry-mac:

1
brew install pinentry-mac

新建配置文件并修改:

1
2
# 请注意,可能pinentry-mac安装位置有变化,请确定软件安装位置
pinentry-program /usr/local/bin/pinentry-mac

重启:

1
gpg-connect-agent reloadagent

参考与转载

在macOS上使用GPG对GitHub进行签名_灯半昏月半明

在 macOS 中使用 GPG 签名提交至 Github_morooi’s Blog


使用GPG对Github进行签名
http://seddon.lol/2023/03/11/使用GPG对Github进行签名/
作者
Seddon
发布于
2023年3月11日
许可协议