Github使用GPG对Commit进行签名
如何使用GPG对Commit进行签名,并配置Github。
概述
使用GPG,可以在本地对提交进行签名。这些提交在GitHub上标示为已验证,便于其他人信任更改来自可信的来源,如下图,在Github中可看到Verified
标记。
配置步骤
安装 GPG
macOS
可使用homebrew
进行安装
|
|
注意
下述步骤基于gpg (GnuPG) 2.4.5;
生成GPG密钥对
|
|
该命令会提示指定密钥类型、密钥大小、密钥有效时长,默认值即可。命令结果示例如下
|
|
其中39395E89396199AD
即为私钥,1823F843E3B49C5F
即为公钥。
|
|
再运行该命令即可看到以-----BEGIN PGP PUBLIC KEY BLOCK-----
开头、以-----END PGP PUBLIC KEY BLOCK-----
结尾的一段内容。
注意
要求你输入电子邮件地址时,请确保输入 GitHub 帐户的经过验证的电子邮件地址。
检查现有GPG密钥
|
|
该命令列出你拥有其公钥和私钥的长形式GPG密钥。
Github中添加GPG密钥
在GitHub任意页的右上角,单击个人资料照片,然后单击Settings
进入设置
在SSH and GPK keys
设置中点击New GPG key
Title
自定义取个名字,将gpg --armor --export <私钥id>
的内容复制到Key
中,保存。
将签名密钥告知 Git
|
|
若要将Git配置为默认对所有提交进行签名,请输入以下命令:
|
|
如没有配置该项,在git commit -S
也可对提交进行签名
其他
删除GPG密钥对
|
|
先删除了私钥,才能删除公钥
修改GPG密码
|
|
执行上述命令进入GPG命令行。在GPG命令行执行passwd
命令可修改密码。
报错
error: gpg failed to sign the data:
gpg: signing failed: Inappropriate ioctl for device
直接在命令行或在终端配置文件(如.zshrc
)中设置变量GPG_TTY
|
|
重要
如果使用了zsh的powerlevel10k主题,在zsh配置文件中export GPG_TTY=$(tty)
可能会失效,打开终端输出GPG_TTY
变量可能是not a tty
。需要改成export GPG_TTY=$TTY
,详见not a tty when loading terminal with powerlevel10k #524