web-dev-qa-db-ja.com

gpg-agentを使用して一時的にpinentryプログラムを変更する

Xディスプレイなしまたはsshを介してgpg-agentを使用することがあるので、私の設定ファイルには次のものが含まれています。

pinentry-program /usr/bin/pinentry-curses

このように、gpgパスフレーズはcursesで要求されます。

とはいえ、一部のグラフィカルスクリプトでは、代わりにGTK pinentryを使用したいと思います。 gpgを呼び出して一時的に別のpinentryを使用する方法は?

8
a3nm

PINENTRY_USER_DATA環境変数を使用して、gpg情報をpinentryコマンドに渡すことができます。次に、pinentry-programを、変数に応じてcursesまたはGTK pinentryを実行する this などのカスタムラッパーに設定する必要があります。

これは、GPG 1.xのドキュメントに書かれていることとは逆に、GPG 2.xでのみ機能するようです。

したがって、 そのスクリプト の場合、gpg2を使用してpinentry-cursesを使用し、PINENTRY_USER_DATA="gtk" gpg2を使用してpinentry-gtk-2を使用します。

9
a3nm

見つめている man pinentry-gnome3、 私はこれを見る:

   pinentry-gnome3  implements  a PIN entry dialog based on GNOME 3, which
   aims to follow the GNOME Human Interface Guidelines as closely as  pos‐
   sible.   If the X Window System is not active then an alternative text-
   mode dialog will be used.  There are other flavors that  implement  PIN
   entry dialogs using other tool kits.

残念ながら、このテキストモードのフォールバックは私には機能しません。他には sameissue があるようです。しかし、 このコメント は、別のGUIピン入力プログラムを試すように私を駆り立てました:pinentry-gtk2。次のように切り替えることができます:

> Sudo update-alternatives --config pinentry
There are 3 choices for the alternative pinentry (providing /usr/bin/pinentry).

  Selection    Path                      Priority   Status
------------------------------------------------------------
* 0            /usr/bin/pinentry-gnome3   90        auto mode
  1            /usr/bin/pinentry-curses   50        manual mode
  2            /usr/bin/pinentry-gnome3   90        manual mode
  3            /usr/bin/pinentry-gtk-2    85        manual mode

Press <enter> to keep the current choice[*], or type selection number: 3
update-alternatives: using /usr/bin/pinentry-gtk-2 to provide /usr/bin/pinentry (pinentry) in manual mode

切り替えたら、完璧に機能しました。デスクトップ上のターミナルでは、GUIパスワードエントリを使用しますが、マシンにsshすると、テキストモードのパスワードエントリが使用されます。

6
mblythe