gpg-agentとSSHを使用してPinentryが失敗する

gpg-agentとSSHを使用してPinentryが失敗する

私はFedora 22を使用しています。 Yubikey NeoのPGP認証サブキーを使用してSSH接続を認証するようにGnuPGを設定しようとしています。

次のようにgpg-agentを起動するシステムデバイスがあります。

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

構成でSSHサポートを有効にしました。

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

設定の他の部分には追加が含まれます。主なポイント~/.gnupg/sshcontrol自分のキーをファイルに追加するには、自分のキーを追加します。公開鍵リモートホストに宣言し、環境変数

グローバルな観点から、さまざまなログを見ると、設定が機能しているようです。 SSHがキーを見つけましたが、実際に署名することはできません。ログを見ると、プログラムの起動に失敗してPINを要求しないgpg-agentことがわかります。pinentry

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で何が起こっているのかを理解するのに役立ちますか?

答え1

まあ、これは私にとって効果的でした。

export GPG_TTY=`tty`

gpgを使用する前に、それを追加または.bashrc開始してください。

答え2

上記ですでに答えを見つけましたGPGウェブサイトそれ自体。エージェントは、Pinentryウィンドウが表示された画面を見つけることができません。ちょうどファイルに以下を入れました.*shrc

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

関連情報