WSL 環境で git commit したら gpg が failed してしまった時に思い出すメモ
状況
git
with GPG on zsh on Arch Linux on WSL:
> git commit -m "neko nyan ko" error: gpg failed to sign the data fatal: failed to write commit object
git
が gpg
で死んでいる。 gpg
で死んでいるので gpg --list-keys
をとりあえず確認するが、鍵は一見正常に扱える状態に見える。さてなんじゃろう?
> echo "hoge" | gpg --clearsign -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 hoge gpg: signing failed: Inappropriate ioctl for device gpg: [stdin]: clear-sign failed: Inappropriate ioctl for device
簡単な文字列を gpg
へ投げると容赦無く死んだ。
解決方法
GPG_TTY=$(tty)
これだけだと、直後はまだ:
> echo "hoge" | gpg --clearsign -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 hoge gpg: signing failed: Inappropriate ioctl for device gpg: [stdin]: clear-sign failed: Inappropriate ioctl for device
さらに何かよくない深刻化した事態が脳裏をよぎる。しかし大丈夫、稼働中の gpg プロセスをすべて kill
してから試すと、 tty なパスフレーズ入力を経由しつつ:
期待動作してくれるようになる:
echo "hoge" | gpg --clearsign -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 hoge -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEnbin1TDZDg++OLb7iLhqD0jAIdYFAl5NhZgACgkQiLhqD0jA IdaXEBAAp6CO9J61DuTdCA32sn6M+sZSjXlWmJH06gecgw3eeynVTevPUtFmRZx6 jcvjDzHKxvlQRar2zMh6B9/ZN65OdjO/gJQIarz8anZNoGer6OWWFBDB0vb91ROD ZlfopI6XgGbbEufOrB3MBtFQkT7YS5RrZd8Gm7GEFhV3bCYxnh/RRkhXCH+zhLPP OnkBbgG9muSe1VYOHqo8Z2CRpp9KWRnGwThyFkHrWgF9/rplWc/lWqpjxgY1UsP9 0z60HmADtuvM+S1xciOu+2IFo+BGPb2bLhwUNAMlRSFzvLyEb55MAnBRrI7Qeu0Y WgCvyRpSwt7Pmtn2CXqYlfg7mMNgks657DLp98tdF/pIy8bPWMT2N3IkECER5UjI mNpuNgOZVUiqUglO+yLx+H7p0RF7bMfzUHts3aszdkuHoNuKp+xRq/EO5cPB+3ID bigzdCb/eyHvu+WV+o1vLo6BTNiX3V+PoMT7HP1DhWYDB3z7b/7iJ/pAGCXLi4QL QZLwyRq7fU0wMalL/qmAyhNtvxJGOXKN9iybzyglIj+EIe4nRawdKqrmEvnSSnPQ A4YyRd7x4VN8apnpxwcqkV97kQnpACOPmsfpuzfr+O+LdwKGV4J0NWe9YP3sIx+N 7g2OgKLJqQ8L7zeYp3rABG++rlXruxlcEmZdcQY+1Z4ja39GHrw= =EKCe -----END PGP SIGNATURE-----
解決😃