LEEUNITYAssets / Content / 博客.asset
层级
⌄ Lee / Homepage
INSPECTOR
Type
Content
Name
博客
lee@mtftm.com ↗GitHub ↗
N022SYSTEM / LINUX

技术 / 简体中文

修复终端环境使用 GPG 签名报错

使用终端连接服务器,调 yubikey 内的 GPG 密钥签 Git 提交时提示错误,简要排查:

更新
2025.05.05
阅读
1 分钟
语言
简体中文

排查问题

使用终端连接服务器,调 yubikey 内的 GPG 密钥签 Git 提交时提示错误,简要排查:

验证是否有有效私钥:

gpg --list-secret-keys --keyid-format LONG

测试是否正确读取智能卡:

gpg --card-status

直接使用 GPG 测试签名:

echo "test" | gpg --clearsign

获得输出:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

test
gpg: signing failed: Inappropriate ioctl for device
gpg: [stdin]: clear-sign failed: Inappropriate ioctl for device

观察报错发现,多终端环境下 GPG 无法自动识别当前正在使用的终端设备,导致不能正确的将 PIN 码输入提示传递给用户,配置 GPG_TTY 环境变量尝试修复:

export GPG_TTY=$(tty)

重新测试签名:

成功弹出校验框,至此问题解决。