3

使用GPG对Git Commit进行签名

 2 years ago
source link: https://xiaozhou.net/use-gpg-to-sign-your-git-commit-2020-04-12.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

使用GPG对Git Commit进行签名

发表于 2020-04-12 | 分类于 技术控 | 0 Comments | 阅读次数: 878
字数统计: 589 字 | 阅读时长 ≈ 2 分钟

使用GPG可以对我们的每一个Git Commit进行签名,通过签名,会在commit的记录上显示一个 Verified 的标记,它表示这次提交是确实是出自你自己,而不是冒用你帐号的人。目前GitHub和GitLab均已经支持此功能。

通过GPG签名的Git Commit更加可信,就算你的SSH private key泄漏,别人也没办法仿冒你的身份对Git Commit进行签名,或者更改你已经签名的Git Commit。

安装GPG

Mac OS下安装GPG,可以直接用 homebrew:

brew install gpg

生成GPG密钥

跟SSH的Key一样,GPG也是采用非对称加密方式。生成一对GPG密钥,我们需要使用命令:

gpg --full-generate-key

生成类似SSH Key,需要你输入用户名,邮箱,或者是密钥的保护密码。生成完成后,我们可以通过如下命令,查看系统中已经生成的GPG Key:

gpg -K

系统中的每对GPG key,均有一串类似十六进制的Key ID。由于我的系统中已经有两对GPG Key,所以看起来是这样的:

提交公钥到GitHub

GitHub的帐号设置中,有专门添加SSH Key和GPG Key的地方,GitLab也类似。首先,我们应当使用命令把GPG Key的公钥导出和显示出来:

gpg --armor --export <Key ID>

接着,我们需要把 BEGINEND 之间的内容复制,添加到GitHub,成功之后,GitHub就能显示我们的GPG Key了:

本地Git设置

接下来,我们需要设置本地的Git:

git config --global user.signingkey <Key ID>
git config --global commit.gpgsign true
git config --global gpg.program gpg

上面命令的目地,是设置在Git Commit签名的时候所用到的Key,并全局开启GPG签名,然后还指定了签名使用用到的程序 pgp。如果你使用SKM,你需要在对应SSH Key的目录中,创建一个HOOK 文件,然后复制上面的命令,这样,在切换SSH Key的时候,也能自动生效设置了。

最后,就是验证提交和测试了,如果一切进展顺利,你就能在GitHub或者GitLab的提交上,看到右边绿色的 Verified 标记了。

很幸运的是,Emacs的Git插件magit 也完美支持GPG签名功能,这样在Emacs中提交的时候,也可以直接用GPG签名了,nice!

支持原创技术分享,据说打赏我的人,都找到了女朋友!

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK