web-dev-qa-db-ja.com

GPGピンエントリの設定の問題

AとBの2つのホストがあります。Aでは、gpgpinentryプログラムをpinentry-cursesに設定していますが、どうすればよいかわかりません。 AとBの違いがわからないようですが、A(GUIがない)ではgpgpinentry-cursesを使用させることができません。 Bでは、私が端末にいるのか、コンソールにいるのか、別のホストにSSH接続して戻ってきたのかは問題ではないようです。私はいつもpinentry-cursesを取得します。オンAでは、ピンを入力できないため、すべての操作が失敗します。

他に何をチェックすればいいのかわかりません。これが私が見てみたすべてです。

まず、pinentryシンボリックリンク:

me@b ~ % ls -l $(dirname $(which pinentry)) | grep pinentry
lrwxrwxrwx 1 root root            14 Dec  8 00:29 pinentry -> pinentry-gtk-2
-rwxr-xr-x 1 root root         60832 Dec  8 00:29 pinentry-curses
-rwxr-xr-x 1 root root         48256 Dec  8 00:29 pinentry-emacs
-rwxr-xr-x 1 root root         65088 Dec  8 00:29 pinentry-gnome3
-rwxr-xr-x 1 root root         73792 Dec  8 00:29 pinentry-gtk-2
-rwxr-xr-x 1 root root        103280 Dec  8 00:29 pinentry-qt
-rwxr-xr-x 1 root root         52416 Dec  8 00:29 pinentry-tty

me@b ~ % diff <(ssh a 'ls $(dirname $(which pinentry)) | grep pinentry') <(ls $(dirname $(which pinentry)) | grep pinentry)

私のgpg.confファイルは同じです(モジュロコメントと空白行):

me@b ~ % diff <(ssh a "egrep -v '^#|^$' ~/.gnupg/gpg.conf") <(egrep -v '^#|^$' ~/.gnupg/gpg.conf)  

私の~/.gnupgフォルダーの内容は、大きな違いはないようです。

me@b ~ % diff <(ssh a ls -R ~/.gnupg) <(ls -R ~/.gnupg)
2c2
< S.gpg-agent
---
> crls.d
8a9
> S.gpg-agent
9a11,13
> 
> /home/me/.gnupg/crls.d:
> DIR.txt

どちらにもgpg-agent.confファイルはありません:

me@b ~ % ls ~/.gnupg/gpg-agent.conf
ls: cannot access '/home/me/.gnupg/gpg-agent.conf': No such file or directory
me@b ~ % ssh a ls ~/.gnupg/gpg-agent.conf
ls: cannot access '/home/me/.gnupg/gpg-agent.conf': No such file or directory

どちらにもpinentry-cursesがインストールされています:

me@b ~ % pacman -Ql pinentry | grep -i pinentry-curses
pinentry /usr/bin/pinentry-curses
me@b ~ % ssh a 'pacman -Ql pinentry | grep -i pinentry-curses'
pinentry /usr/bin/pinentry-curses

私の環境はほぼ同じように見えます:

me@b ~ % env | egrep -i 'ssh|gpg|pgp|pinentry'
SSH_AGENT_PID=519
SSH_AUTH_SOCK=/tmp/ssh-yC9qsRh9Uf2c/agent.518
me@b ~ % ssh a "env | egrep -i 'ssh|gpg|pgp|pinentry'"
SSH_CLIENT=192.168.1.10 54816 22
SSH_CONNECTION=192.168.1.10 54816 192.168.1.2 22

また、両方のホストのgpg-agentsは、同じ引数で呼び出されます。

me@b ~ % cat /proc/$(pgrep gpg-agent)/cmdline
gpg-agent--homedir/home/me/.gnupg--use-standard-socket--daemon%
me@b ~ % ssh a 'cat /proc/$(pgrep gpg-agent)/cmdline'
gpg-agent--homedir/home/me/.gnupg--use-standard-socket--daemon%
1
Huckle

GnuPGは、プラグイン可能で構成可能なpinentry実装を使用します。通常は、/usr/bin/pinentryまたは同様のソリューションのシンボリックリンクを使用します。

update-alternativeシステムを出荷しているDebianおよび派生物では、どちらが実行中のセットアップであるかを表示できます

update-alternatives --display pinentry

そしてそれを変更します

update-alternatives --config pinentry

手動で「めちゃくちゃ」にした場合は、pinentryが指す場所を確認してください。

ln -l `which pinentry`

(ただし、シンボリックリンクを再帰的に解決する必要がある場合があります)。

1
Jens Erat