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
2error: gpg 数据签名失败
fatal: 写提交对象失败解决方案:
1
vim ~/.zshrc
1
2# GPG CONFIG (交互式窗口不弹出解决方案)
export GPG_TTY=$(tty)GPG2密码缓存时间设置:
默认文件不存在则创建1
2
3
4
5
6
7
8
9touch ~/.gnupg/gpg-agent.conf
```
**推荐**配置gpg-agent 选项(密码缓存有效时间(不建议ttl设置过长!)
* GnuPG agent是一个帮助工具,当你运行gpg用于缓存私钥时会自动运行。
* default-cache-ttl(seconds):如果在失效期前,使用了相同名称的私钥,那么计数器会被重置,默认是600s(10min)
* max-cache-ttl (seconds):不论你最近是否使用过私钥,只要超过了此值,就需要进行重新验证,默认是30min。
* **可设置长时间,但不建议太长**,还有一种是定期刷新有效时间,但需要配置系统任务容易遗忘所以不推荐。default-cache-ttl 1800
max-cache-ttl 72001
2
重启 gpg-agent进程:echo RELOADAGENT | gpg-connect-agent
提交推送完成后GitHub仍然提示未验证?
解决方案:
检查本地提交的GIT默认邮箱和GitHub平台的登记邮箱是否一致,不一致可修改当前项目的邮箱保持和GPG一致即可。其他平台如何设置?
解决方案:
其他GIT在线平台和GitHub操作方法基本一致。
请妥善保存和使用GPG签名密钥,防止敏感文件泄漏!
GitHub以及其他GIT平台中启用GPG2认证基本使用流程(MacOS),增强身份识别和安全性