GnuPG Cheatsheet - Encryption
文件加密和代码签名必备的 GnuPG 命令都在这里了,从密钥管理到 Git 签名,按场景分类整理,直接复制。
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,解决密码缓存异常问题。
- 密钥指纹是验证密钥真伪的重要方式,导入他人公钥后务必核对指纹。