VSCode Git 使用 GPG
1. GPG 安装
Linux 包管理器安装即可,Windows 可在如下链接下载。
下载链接: www.gnupg.org
Windows 下推荐:https://gpg4win.org/download.html
2. GPG 使用
1 2 3 4 |
# gpg --full-generate-key gpg --gen-key # 生成密钥(公钥和私钥),按照流程提示进行 gpg --list-keys # 列出当前所有的密钥,检查刚才的密钥是否生成成功 # 列表的一个长字符串即<USER_ID_HASH> |
可以通过--output
来导出密钥到文件,--armor
选项以ASCII码的格式导出。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# 导出 gpg --output <YOUR_KEY_FILE_NAME>-pub.key --armor --export <USER_ID_HASH> gpg --output <YOUR_KEY_FILE_NAME>-sec.key --armor --export-secret-key <USER_ID_HASH> # 导入 gpg --import <YOUR_KEY_FILE_NAME>-pub.key gpg --allow-secret-key-import --import <YOUR_KEY_FILE_NAME>-sec.key # 加密 gpg --encrypt -armor -r key-id filename # 解密 gpg --output 新文件名 --decrypt 加密文件名 # 修改密钥 gpg --edit-key 标识名 # 删除密钥 gpg --delete-secret-keys 标识名 # 删除公钥 gpg --delete-keys 标识名 |
3. Git 启用 GPG
1 2 |
git config --global user.signingkey <USER_ID_HASH> git config --global commit.gpgsign true |
bash 环境将 export GPG_TTY=$(tty)
加入到 ~/.bash_profile
。
Windows 可能还要配置 GPG 程序路径:
1 |
git config --global gpg.program "D:\Program Files (x86)\GnuPG\bin\gpg.exe" |
设置 gpg-agent.conf
延长 gpg 密钥缓存时间,内容设置为:
1 2 3 4 |
default-cache-ttl 86400 max-cache-ttl 604800 # wsl2 下生效,wsl 中请注释以下行 pinentry-program "/mnt/d/Program Files (x86)/Gpg4win/bin/pinentry.exe" |
设置后可能需要通过运行以下命令重新启动 GPG 代理:
gpg-connect-agent reloadagent /bye
其中Linux / macOS 路径为:~/.gnupg/gpg-agent.conf
,Windows (使用 gpg --version
确认使用的路径),一般为:
1 2 |
%AppData%\gnupg\gpg-agent.conf %userprofile%\.gnupg\gpg-agent.conf |
Wsl 的 Linux 下可用方案为 ~/.bashrc
下弄 2 个函数,用于缓存密钥密码:
1 2 3 4 5 6 7 8 9 10 |
gpg-login() { # 对 "test" 这个字符串进行 gpg 签名,这时候需要输密码。 # 然后密码就会被缓存,下次就不用输密码了。 # 重定向输出到 null,就不会显示到终端中。 echo "test" | gpg --clearsign > /dev/null 2>&1 } gpg-logout() { echo RELOADAGENT | gpg-connect-agent } |
VSCode 配置加上:
1 |
"git.enableCommitSigning": true, |
4. Git 服务器添加公钥
将上面生成的公钥<YOUR_KEY_FILE_NAME>-pub.key
内容添加至 Git 服务器。
参考资料:
[1] https://blog.miniasp.com/post/2020/09/21/Keep-GnuPG-credentials-cached-for-entire-day
[2] https://stackoverflow.com/questions/63440623/no-gpg-passphrase-prompt-in-visual-studio-code-on-windows-10-for-signed-git-comm
微信扫描下方的二维码阅读本文