2 つのホスト A と B があります。 AIにgpg
pinentry
プログラム設定があるのにpinentry-curses
どうするのかわかりません。 AとBの違いが見つからないようですが、A(GUIなし)ではgpg
機能しませんpinentry-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-agent
両方のホストのsは同じパラメータで呼び出されます。
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
pinentry
GnuPGは通常、シンボリックリンク/usr/bin/pinentry
または同様のソリューションを介してプラグ可能で構成可能な実装を使用します。
Debianとその派生製品では、インストールされてupdate-alternative
いるシステムを表示できます。
update-alternatives --display pinentry
そしてそれを変更
update-alternatives --config pinentry
手動で「台無しにした」場合は、pinentry
それが指している場所を確認してください。
ln -l `which pinentry`
(しかし、シンボリックリンクを再帰的に解決する必要があるかもしれません)。