web-dev-qa-db-ja.com

Pinentryがgpg-agentおよびSSHで失敗する

私はFedora 22を実行しています。YubikeyNeoにあるPGP認証サブキーを使用してSSH接続を認証するようにGnuPGをセットアップしようとしています。

次のようにgpg-agentを開始するsystemdユニットがあります。

/usr/bin/gpg-agent --homedir=%h/.gnupg --daemon --use-standard-socket

そして、私は設定でSSHサポートを有効にしました:

enable-ssh-support
pinentry-program /usr/bin/pinentry-gtk

セットアップの他の部分には、~/.gnupg/sshcontrolファイルにキーの keygrip を追加すること、リモートホストにmy public key を追加すること、および 環境変数

セットアップが機能しているように見えるさまざまなログをグローバルに見ると、SSHがキーを見つけたが、実際にはそれで署名できないことがわかります。 gpg-agentのログを見ると、pinentryプログラムの起動に失敗しているため、PINコードを要求していないことがわかります。

2015-07-22 23:23:28 gpg-agent[6758] DBG: error calling pinentry: Ioctl() inappropriate for a device <Pinentry>
2015-07-22 23:23:28 gpg-agent[6758] DBG: chan_8 -> BYE
2015-07-22 23:23:28 gpg-agent[6758] DBG: chan_7 -> CAN
2015-07-22 23:23:28 gpg-agent[6758] DBG: chan_7 <- ERR 100663573 The IPC call was canceled <SCD>
2015-07-22 23:23:28 gpg-agent[6758] smartcard signing failed: Ioctl() inappropriate for a device
2015-07-22 23:23:28 gpg-agent[6758] ssh sign request failed: Ioctl() inappropriate for a device <Pinentry>

ここに表示されているのは、SSHと組み合わせて使用​​した場合、pinentryを呼び出すときに一部のioctl呼び出しが失敗することです。ただし、次を実行すると:

$ echo "Test" | gpg2 -s

PINウィンドウがポップアップし、すべて正常に動作しています。

このセットアップとSSHで何が起こっているのかを理解するのを手伝ってくれませんか?

12
Spack

答えは GPG Website 自体にあります。エージェントは、Pinentryウィンドウを表示する画面を見つけることができませんでした。私は.*shrcファイル:

echo "UPDATESTARTUPTTY" | gpg-connect-agent > /dev/null 2>&1
10
Spack

まあ、これは私のために働きました:

export GPG_TTY=`tty`

これを.bashrcに追加するか、gpgを使用する前にキックしてください。

17
vigo