私はアーチLinuxでopenssh7.5p1とgnupg 2.1.21を使用しています(これらはアーチに付属しているデフォルトバージョンです)。gpg-agent
SSHプロキシとして使用したいです。私は以下を私の中に入れました~/.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-agent
opensshに付属のキーを実行しても機能します。
ドキュメントにはssh-add
キーをに追加する必要があることが示されていますが、~/.gnupg/sshcontrol
何も起こりません。
私の質問:ssh-keygen
opensshで生成されたキーをロードする最も簡単な方法は何ですか?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-add
gpg-agentで使用すると、トリガーされるダブルテキストフィールド入力ウィンドウのプロンプトを処理できないようです。
pinentry-emacsをアンインストールしてGTK pinentryをインストールすると、ここで問題が解決しました。