gpg2(GnuPG2)にハマる
続きです.
gpg2の鍵作成にハマる - なぜか数学者にはワイン好きが多い
X Windowに直接ログインしてpgp --gen-keyをやると,自動的にpgp-agentが立ち上がり,次に自動的にpinentry-qtが立ち上がりパスフレーズの入力が求められます.
ところが,ssh経由でログインした先でgpg --gen-keyをやると,まずは次のようなエラーがでます.
You need a Passphrase to protect your secret key. can't connect to `/home/hoge/.gnupg/S.gpg-agent': Connection refused gpg-agent[26217]: command get_passphrase failed: Operation cancelled gpg: cancelled by user gpg: Key generation canceled.
これは,pgp-agentを立ち上げておくことで回避できます.
$ gpg-agent --daemon -v --use-standard-socket gpg-agent[27457]: listening on socket `/home/hoge/.gnupg/S.gpg-agent' GPG_AGENT_INFO=/home/hoge/.gnupg/S.gpg-agent:27458:1; export GPG_AGENT_INFO; gpg-agent[27458]: gpg-agent (GnuPG) 2.0.14 started
そしてgpg --gen-keyをやると,
You need a Passphrase to protect your secret key. gpg: problem with the agent: No pinentry gpg: Key generation canceled.
No pinentry... gpg-agentの方では,こんなエラーが出てます.
gpg-agent[43127]: starting a new PIN Entry gpg-agent[43127]: can't connect to the PIN entry module: IPC connect call failed gpg-agent[43127]: command get_passphrase failed: No pinentry gpg-agent[43127]: handler 0x2840a400 for fd 6 terminated
これは,pinentryが立ち上がるのに失敗しているせいです.原因は,
% ls -l `tty` crw--w---- 1 tetu-s tty 0, 98 Apr 20 21:40 /dev/pts/1
TTYが自分ユーザ以外は読めなくなっているからです.
あと,No pinentryが出る時は,文字通りpinentryコマンドが入っていないこともあります.
そこで,gpg-agentやpinentryを立ち上げる前,もしsuするならその前に,最初のユーザでパーミッションを書き換えます.
> chmod a+rwx `tty`
gpg --key-genをやったあとには,パーミッションを戻すようにしましょう.
> chdmo 640 `tty`
また詳しく書きます.