1 密钥管理
1.1 生成密钥
交互式生成密钥:
gpg --full-generate-key
无交互式生成密钥(以 Ed25519 为例):
gpg --batch --yes \
--pinentry-mode loopback \
--passphrase '' \
--quick-generate-key "Your Name <you@example.com>" ed25519 sign 0
无交互式生成密钥(以 RSA 4096 为例):
gpg --batch --yes \
--pinentry-mode loopback \
--passphrase '' \
--quick-generate-key "Your Name <you@example.com>" rsa4096 sign 0
1.2 查看密钥
查看公钥:
gpg --list-keys
查看私钥:
gpg --list-secret-keys
1.3 删除密钥
删除私钥:
gpg --delete-secret-keys <KEY_ID>
删除私钥(无交互式):
gpg --batch --yes --delete-secret-keys <KEY_ID>
删除公钥:
gpg --delete-keys <KEY_ID>
删除公钥(无交互式):
gpg --batch --yes --delete-keys <KEY_ID>
2 导入导出
2.1 导出公钥
gpg --armor --export <KEY_ID>
2.2 导出私钥
gpg --armor --export-secret-keys <KEY_ID>
2.3 导入公钥
gpg --import gpg.public.txt
2.4 导入私钥
gpg --import gpg.private.txt
3 信任与指纹
3.1 查看指纹
gpg --fingerprint <KEY_ID>
3.2 设置密钥为“绝对信任”
echo '<KEY_ID>:6:' | gpg --import-ownertrust
4 Git 场景
4.1 配置 Git 使用 GPG
git config commit.gpgsign true
git config user.signingkey <KEY_ID>
5 常见问题
5.1 Debian 系统配置 TUI 弹窗
先看看系统有哪些 pinentry:
ls /usr/bin/pinentry*
如果有:
/usr/bin/pinentry
/usr/bin/pinentry-curses
配置 gpg-agent:
mkdir -p ~/.gnupg
cat > ~/.gnupg/gpg-agent.conf <<'EOF'
pinentry-program /usr/bin/pinentry-curses
EOF
然后重启 agent:
gpgconf --kill gpg-agent
gpgconf --launch gpg-agent
配置环境变量:
export GPG_TTY="$(tty)"