web-dev-qa-db-ja.com

パスワードを要求するためにGPGにコンソールモードpinentryを強制的に使用させる方法は?

Sshセッションなどのコンソールベースの環境からgpgを使用すると、GTK pinentryダイアログをSSHセッションに表示できないため失敗します。

私はunset DISPLAYを試しましたが、役に立ちませんでした。 GPGのコマンドラインオプションには、松ぼっくりをコンソールモードに強制するためのスイッチは含まれていません。

古いバージョンのGPGはSSHセッションではうまく機能するテキストベースのプロンプトを提供していましたが、アップグレード後は失敗するだけです。

--textmodeコマンドラインスイッチがありますが、どうやらそれは他の何かをします。

リモートセッションでプレーンテキストのpinエントリを取得するための適切でクリーンな方法は何ですか?

70
ccpizza

松を恒久的に変更するには、あなたの~/.gnupg/gpg-agent.confに以下を追加してください:

pinentry-program /usr/bin/pinentry-tty

(pinentry-ttyがない古いバージョンでは、 'full-terminal'ダイアログウィンドウにはpinentry-cursesを使ってください。)

設定をリロードするようにGPGエージェントに指示します。

gpg-connect-agent reloadagent /bye
86
grawity

Ubuntu 16.04.3で、パスワードなしのシステムアカウントとssh上のユーザーアカウントでgpg2(2.1.11)を使用して秘密鍵を生成/インストールしようとしたときに、この問題が発生しました。うまくいったことは何もない。

gpg:key FE17AE6D/FE17AE6D:エージェントへの送信エラー:許可が拒否されました
gpg:キー配列の作成エラー:許可が拒否されました

私はそれから これ を見つけました。

pico ~/.gnupg/gpg-agent.conf
# add: allow-loopback-pinentry
gpg-connect-agent reloadagent /bye
gpg2 --pinentry-mode loopback --import private.key
8
racitup

Debianの箱の上で:

Sudo apt install pinentry-tty
Sudo update-alternatives --config pinentry

(そしてpinentry-ttyに設定してください)

お持ちでない場合は、yumまたはapt-getを使ってpinentry-cursesをインストールしてください。

その後、実行します。

Sudo update-alternatives --config pinentry

そしてリストからpinentry-cursesを選択してください。

3
Aiden Woodruff

私の答えをここ からコピーします ...

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.

残念ながら、このテキストモードの代替は私にとってはうまくいきません。他の人が 同じ問題を抱えているようです 。しかし、 このコメント は私に別の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のパスワード入力を使用しますが、私が自分のマシンにログインすると、テキストモードのパスワード入力を使用します。

2
mblythe

Ubuntu 18.04では、gpg 2.2.4のデフォルトインストールで、私は

/usr/bin/pinentry
/usr/bin/pinentry-gnome3
/usr/bin/pinentry-gtk-2
/usr/bin/pinentry-x11

テキストベースのPINエントリを作成するには、次のようにしました。

export GPG_TTY=$(tty)
gpg-connect-agent updatestartuptty /bye >/dev/null
2
Roc White

松ぼっくりのポップアップを防ぐにはssh localhostを使えます。オプションでX11を無効にします。-x Disables X11 forwarding.下記の例全体を参照してください。

patrick@patrick-C504:~$ ssh localhost
patrick@localhost's password: 
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.13.0-68-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

Last login: Mon Nov 16 22:48:53 2015 from localhost
patrick@patrick-C504:~$ gpg --gen-key
gpg (GnuPG) 1.4.16; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection? 4
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 
Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0) 
Key does not expire at all
Is this correct? (y/N) y

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <[email protected]>"

Real name: Foo
Name must be at least 5 characters long
Real name: FooBar
Email address: [email protected]
Comment: 
You selected this USER-ID:
    "FooBar <[email protected]>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.

gpg: gpg-agent is not available in this session
Enter passphrase:
1
PvdL

私はPvdLの答えの中の「完全な例」を少し紛らわしいと思いました、これが私がすることです:

ssh -X machine
# work hack hack work until I need something from gpg
ssh -x localhost -p$port
gpg2 --decrypt file.gpg
# enter password to pinentry
exit
# now the key is unlocked in gpg-agent, and I can keep decrypting files
# from my X ssh session without being asked for the password
1
unhammer

export GPG_TTY=$(tty)unset DISPLAYを実行すると、パスフレーズを尋ねるTLIダイアログボックスが表示されます。正しいパスフレーズを入力すると、復号化されます。

上記のGPG_TTYのエクスポートとDISPLAYの設定解除を行わない場合は、X Windowsを使用することを想定しています。 X11転送がオンになっているMS-Windowsシステムからセッション(PuTTYなど)を起動した場合は、X-WindowダイアログをMS Windowsシステムに送信します。 WindowsのExceedやCygwin/XなどのXエミュレータを使用して、パスフレーズのXウィンドウプロンプトをMS-Windowsボックスに表示させることができます。

ただし、--batchオプションを使用してコマンドラインを実行し、--passphraseオプションを使用してパスフレーズを入力することで、GPG_TTYを設定し、DISPLAYの設定を解除してTLIまたはGUIを取得する必要がなくなります。

gpg --batch --passphrase "<passphrase>" -o "<decrypted output file name>" --decrypt "<encrypted input file name>"

RHEL6でgnupg2を実行している3つの方法すべてが、今日私にとって役に立ちました。

0
MensaWater