私は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で何が起こっているのかを理解するのを手伝ってくれませんか?
答えは GPG Website 自体にあります。エージェントは、Pinentryウィンドウを表示する画面を見つけることができませんでした。私は.*shrc
ファイル:
echo "UPDATESTARTUPTTY" | gpg-connect-agent > /dev/null 2>&1
まあ、これは私のために働きました:
export GPG_TTY=`tty`
これを.bashrc
に追加するか、gpgを使用する前にキックしてください。