GitHub 以及其他 GIT 平台中启用 GPG2 认证基本使用流程(MacOS),增强身份识别和安全性
base gnupg(version >= 2.1.17,版本 gnupg 已包含 gpg-agent)
注意事项:gpg2 默认交互式输入密码,有相应的解决方案。
brew install(推荐):
1 | brew install gnupg |
版本信息(截至 2022.06.19)
1 | gnupg: stable 2.3.6 (bottled) |
生成以及查看密钥
生成密钥(交互选择建议默认)
1
gpg --full-generate-key
- 在提示时,指定要生成的密钥类型,或按 Enter 键接受默认值。
- 在提示时,指定想要的密钥大小,或按 Enter 键接受默认值。 密钥必须至少是 4096 位。
- 输入密钥的有效时长。 按 Enter 键将指定默认选择,表示该密钥不会过期。
- 验证您的选择是否正确。
- 输入您的用户 ID 信息。
查看已签发密钥
1
gpg --list-secret-keys --keyid-format=long
查看指定公钥的信息(Prints the GPG key ID, in ASCII armor format)
1
gpg --armor --export <GPG key ID>
复制公钥信息到 GitHub 上:
从-----BEGIN PGP PUBLIC KEY BLOCK-----开始,到-----END PGP PUBLIC KEY BLOCK-----设置邮箱(建议全局默认一个常用 Email):
1
git config --global user.email ""
设置项目开启 GPG 验证签名(不建议全局开启,可局部开启,防止影响其他平台或项目的提交引发连锁反应)
1
git config commit.gpgsign true
GPG 密钥导出以及备份
创建导出备份密钥文件的路径(例如):
1 | # 注意:密钥备份完毕后建议清理此目录及文件夹! |
警告:导出的备份密钥为敏感文件,为了安全请确保密钥异地保存妥当后,清理导出当前的备份文件
备份 GPG 公钥
1 | gpg -o ~/GPGBAK/gpg_keys_github_macos --export <GPG Key ID> |
备份 GPG 私钥
1 | gpg -o ~/GPGBAK/gpg_secret_keys_github_macos --export-secret-keys <GPG Key ID> |
常见问题
在终端可能出现 git 提交 commit 时提交失败需要输入 GPG 密码解密密钥? 可设置终端信息,然后重新开启一个终端生效。
错误信息:
1 | error: gpg 数据签名失败 |
解决方案:
1 | vim ~/.zshrc |
1 | # GPG CONFIG (交互式窗口不弹出解决方案) |
GPG2 密码缓存时间设置:
默认文件不存在则创建
1 | touch ~/.gnupg/gpg-agent.conf |
default-cache-ttl 1800
max-cache-ttl 7200
1 |
|
echo RELOADAGENT | gpg-connect-agent
* 提交推送完成后 GitHub 仍然提示未验证?
解决方案:
检查本地提交的 GIT 默认邮箱和 GitHub 平台的登记邮箱是否一致,不一致可修改当前项目的邮箱保持和 GPG 一致即可。
* 其他平台如何设置?
解决方案:
其他 GIT 在线平台和 GitHub 操作方法基本一致。
#### 请妥善保存和使用 GPG 签名密钥,防止敏感文件泄漏!
GitHub 以及其他 GIT 平台中启用 GPG2 认证基本使用流程(MacOS),增强身份识别和安全性


