GnuPG2にpublic key decryption failed: Inappropriate ioctl for deviceと怒られた時の対処法
gpg: encrypted with 4096-bit RSA key, ID XXXXXXXXXXXX, created 2018-03-06 "Tsumugi Shiraishi <tsumugi@example.com>" gpg: public key decryption failed: Inappropriate ioctl for device gpg: decryption failed: No secret key
なんやいね、これは!?
WSL(Ubuntu 18.04)でGnuPG2を使おうと思ったらこんなエラーが出て鍵の復号化が出来ず困った。
ちなみにCUIメインの運用になるので、pinentryにはpinentry-cursesを使ってます。
$ cat ~/.gnupg/gpg-agent.conf pinentry-program /usr/bin/pinentry-curses
解決策
.bashrc
(zshなら.zshrc
)に以下の設定を追記する。
export GPG_TTY=$(tty)
どうやらpinentry-cursesが正しい出力先のttyを認識出来ていないとこのようなエラーが出る模様。(恐らく初期設定だと/dev/ttyとかに向いていると思われる)
ので、シェルが立ち上がる時に正しいttyを設定してあげると直る模様。
あとがき
というかちゃんと設定しろって公式のマニュアルにも書いてありましたね... ちゃんと読むべきでした。