GPG 常用命令

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)"
Author: ismdeep
License: Copyright (c) 2025 CC-BY-NC-4.0 LICENSE