GnuPG Cheatsheet - Encryption

文件加密和代码签名必备的 GnuPG 命令都在这里了,从密钥管理到 Git 签名,按场景分类整理,直接复制。

SysOps·37 commands·Last updated 2026-07-21
Back to SysOps

密钥生成与管理 8

gpg --full-generate-key
交互式生成密钥对(可选算法和有效期)
gpg --quick-generate-key "Name <email>"
快速生成密钥
gpg --list-keys
列出所有公钥
gpg --list-secret-keys
列出所有私钥
gpg --list-keys KEYID
查看指定密钥详情
gpg --edit-key KEYID
交互式编辑密钥(添加子密钥、设置过期等)
gpg --delete-key KEYID
删除公钥
gpg --delete-secret-key KEYID
删除私钥

密钥导入导出 6

gpg --export -a KEYID > pubkey.asc
导出公钥为 ASCII 文件
gpg --export-secret-keys -a KEYID > private.asc
导出私钥(务必妥善保管)
gpg --import pubkey.asc
导入公钥
gpg --import private.asc
导入私钥
gpg --send-keys KEYID --keyserver keyserver.ubuntu.com
上传公钥到密钥服务器
gpg --recv-keys KEYID
从密钥服务器获取公钥

加密与解密 6

gpg -e -r recipient@domain.com secret.txt
用收件人公钥加密文件
gpg -e -r user@domain.com -o secret.txt.gpg secret.txt
加密并指定输出文件名
gpg -d secret.txt.gpg > secret.txt
解密文件并输出到指定文件
gpg -c secret.txt
对称加密(仅用密码,无需公钥)
gpg -d secret.txt.gpg
解密对称加密文件
echo "message" | gpg -e -r user@domain.com
加密管道输入的文本

签名与验证 6

gpg -s document.txt
生成签名(生成 .gpg 二进制文件)
gpg --clear-sign document.txt
生成明文签名(可读且含签名)
gpg -b document.txt
生成分离签名(.sig 文件,原文不变)
gpg --verify document.txt.sig document.txt
验证分离签名
gpg --verify document.txt.asc
验证明文签名文件
gpg --detach-sign -a file.tar.gz
生成 ASCII 分离签名

信任与密钥服务器 5

gpg --edit-key KEYID\n> trust
设置密钥信任级别(交互式)
gpg --sign-key KEYID
对他人公钥签名(信任背书)
gpg --refresh-keys
从密钥服务器刷新所有密钥
gpg --search-keys "user@domain.com"
在密钥服务器搜索公钥
gpg --fingerprint KEYID
查看密钥指纹用于核对身份

Git 签名与实用 6

git config --global user.signingkey KEYID
设置 Git 使用的签名密钥
git config --global commit.gpgsign true
开启所有提交自动签名
git commit -S -m "message"
创建 GPG 签名提交
git tag -s v1.0 -m "release"
创建 GPG 签名标签
git verify-commit HEAD
验证最新提交的签名
gpgconf --kill gpg-agent
重启 gpg-agent(解决密码缓存问题)

💡 Tips

  • Git commit 签名:git config --global commit.gpgsign true,配合 GPG 密钥使用。
  • gpg --armor (-a) 可以生成 ASCII 格式的密钥或签名,方便文本传输。
  • 密钥备份:导出私钥 gpg --export-secret-keys -a KEYID > private.asc,妥善保管。
  • gpg-agent 可以缓存密码,避免每次解密都输入密码。
  • gpgconf --kill gpg-agent 可以重启 agent,解决密码缓存异常问题。
  • 密钥指纹是验证密钥真伪的重要方式,导入他人公钥后务必核对指纹。