本文并非从入门到入土教程,而是你已经准备且配置好了有 GPG 智能卡的 Yubikey,现在要拿到 MacOS 上使用,却不知道怎么用 Yubikey 里的 GPG 给 Commit 和 Tag 签名。
假定你 MacOS 上已经安装有 Git 和 HomeBrew 了,不会请参考知乎文章 Homebrew国内如何自动安装(国内地址)(Mac & Linux)。
先通过 brew 安装以下工具便于管理 Yubikey 上的 GPG智能卡。
brew tap homebrew/versions
brew install gnupg21 pinentry-mac
接下来插入你的 Yubikey (我使用的是Yubikey 5,其他型号类同),然后打开终端键入 gpg --card-edit
即可看到卡上的 GPG 数据,记录你要用于签名的密钥的后几位,例如我的是 5C05964A
。
配置 Git 全局签名用密钥并默认启用签名。
git config --global user.signingkey "密钥HASH"
git config --global commit.gpgsign true
不出意外的话,现在你 Git 签名依然会出意外。
Git 没有找到你的私钥!??? 等等这是为什么呢? 其实熟悉终端或者 Linux 的朋友应该发现了 Git bash 有一套自己的环境变量,它在调用 gpg 时调用的是 Git 安装时自带的,所以现在要让 Git 调用我们自己通过 brew 安装的。
配置 Git 使用我们自己的 GPG 程序。
git config --global gpg.program "/usr/local/MacGPG2/bin/gpg2" //如果你使用别的 GPG 管理工具请自行替换
好,现在当你再次 git commit 时,就会弹出 Yubikey PIN 验证界面了,push 完我们也终于能看到提交有小绿标了喵。
感谢分享