私は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