排查问题
使用终端连接服务器,调 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)
重新测试签名:

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