在 WSL2 中使用 GPG 命令行工具以及对 Git commit 进行签名

网上找到的绝大多数方法都是使用 npiperelay 将 Gpg4win 的 GPG 的 Agent 的 socket 映射到 WSL2 里面,其实更简单的方法是直接在 WSL2 内部使用 gpg.exe

如果想要为 Git 签名但是私钥在智能卡里,可以直接设置 git config --global gpg.program gpg.exe,(如果GPG 不在 Windows 的 PATH 里,需要使用绝对路径,通常为 /mnt/c/Program Files (x86)/GnuPG/bin/gpg.exe,为了方便最好还是加到 PATH 里面去,加完之后需要打开一个新的终端)。

除非程序需要直接的 GPG Agent 访问或者不支持自定义 GPG 二进制,这个方案都比映射 GPG Agent 的套接字要方便不少。

在 GitHub Desktop 中对 Commit 签名

GitHub 的文档中提到 GitHub Desktop 不支持签名,应用中也确实没有给出签名选项。不过,可以通过修改 GitHub Desktop 使用的 Git 的配置来签名。

首先打开 GitHub Desktop 的安装目录,Windows 一般在 “%USERPROFILE%/AppData/Local/GitHubDesktop” 下面。

可以看到几个 “app” 开头的、跟着版本号的目录,选择修改日期最近的那个目录,依次打开 resources/app/git/cmd 会看到 “git.exe”,在 “cmd” 目录里面打开命令提示符,用 git 命令配置 Commit 签名就可以了。下面的命令会默认对所有 Commit 签名。

git.exe config --global user.signingkey <Key ID>
git.exe config --global commit.gpgsign true
退出移动版