Skip to content

ターミナル環境でのGPG署名エラーの修正

作者:Lee 等
最后更新:

問題の調査

ターミナルを使ってサーバーに接続し、Yubikey 内の GPG キーで Git コミットに署名しようとした際にエラーが表示されました。簡単な調査内容:

有効な秘密鍵が存在するか確認:

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

スマートカードが正しく読み取れるかテストする:

bash
gpg --card-status

GPG を直接使って署名テスト:

bash
echo \"test\" | gpg --clearsign

出力結果:

bash
-----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 環境変数の設定で修正を試みます:

bash
export GPG_TTY=$(tty)

再度署名テストを行う:

認証ダイアログが正常に表示され、これで問題が解決されました。

页面历史