gpg-agentはSSHキーを拒否し、ssh-addは「エージェント拒否操作」を報告します。

gpg-agentはSSHキーを拒否し、ssh-addは「エージェント拒否操作」を報告します。

私はアーチLinuxでopenssh7.5p1とgnupg 2.1.21を使用しています(これらはアーチに付属しているデフォルトバージョンです)。gpg-agentSSHプロキシとして使用したいです。私は以下を私の中に入れました~/.gnupg/gpg-agent.conf

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

Archはsystemdでgpg-agentを自動的に起動するので設定しました。

export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gnupg/S.gpg-agent.ssh"

実行すると、期待どおりにssh-add -lアイデンティティが報告されず、プロセスがps報告されます。gpg-agent --supervised

残念ながら、実行すると、ssh-addキータイプは何でも機能しません。以下は、私がDSAを試した方法の例です。

$ ssh-keygen -f testkey -t dsa -N ''
Generating public/private dsa key pair.
Your identification has been saved in testkey.
Your public key has been saved in testkey.pub.
$ ssh-add testkey
Could not add identity "testkey": agent refused operation

他のすべてのgpg機能はうまく機能します(暗号化/暗号解読/署名)。また、生成されたキーはsshで直接使用しても機能し、ssh-agentopensshに付属のキーを実行しても機能します。

ドキュメントにはssh-addキーをに追加する必要があることが示されていますが、~/.gnupg/sshcontrol何も起こりません。

私の質問:ssh-keygenopensshで生成されたキーをロードする最も簡単な方法は何ですか?gpg-agent誰かがターミナルセッションを切り取り、貼り付けて、これがどのように機能するかを示すことができますか?

答え1

明らかな答えは、以下を実行することです。

echo UPDATESTARTUPTTY | gpg-connect-agent

pinentryプログラムは他の用途(ファイルの復号化など)ではうまく機能しますがssh-add

これはうまくいきますが、下には表示されないssh秘密鍵のコピーも作成し、秘密鍵のgpg -Kvパスワードを変更できないようです(sshを使用して編集できないため)。--edit-key)。デフォルトでは、このアプローチはgpg-agent秘密がコピーされる場所の可視性が非常に低いため、非常に満足のいくものではありません。gpg-agentより良い選択肢になりたいので、この質問をする場合は、私の答えを試すのではなく質問を続けることをお勧めしssh-agentます。ssh-agent好ましい主な理由gpg-agentは、スマートカードを使用する必要がある場合です。

答え2

私の場合、使用されたpinentryプログラムに問題がありました。私はpinentry-emacsを使用しています。ssh-addgpg-agentで使用すると、トリガーされるダブルテキストフィールド入力ウィンドウのプロンプトを処理できないようです。

pinentry-emacsをアンインストールしてGTK pinentryをインストールすると、ここで問題が解決しました。

関連情報