gpg-agentが複数のソケットを作成するのはなぜですか

Aug 20 2020

で使用するgpggpg-agent、次のソケットが~/.gnupgディレクトリに作成されます。

S.gpg-agent
S.gpg-agent.browser
S.gpg-agent.extra
S.gpg-agent.ssh

私は、S.gpg-agentが標準のgpg-agentソケットだと思います。しかし、他の人は何のためにありますか?

sshでgpgを使用していないか、ブラウザーでgpgを使用していません。

これらは自動的に作成されるように構成されていますか?

それらを無効にできますか?

標準が必要なだけです S.gpg-agent

私はgnupg 2.2.12Debianバスターで使用しています。

回答

5 PatrickMevzek Aug 21 2020 at 18:09

gpg-agent多重人格を持っており、様々なサービスを提供することができます。

たとえばssh-agent、ボックスでの実行を停止しgpg-agent、代わりにドロップインとして使用できます...適切なソケットを使用している限りS.gpg-agent.ssh、適切なプロトコルを実装する必要sshがあるため、説明が必要です。なぜそんなに役立つのでしょうか?たとえば、ごく最近までssh、FIDO2 / U2Fに保存されているキー(Yubikeysなど)を使用できませんでした。これは、少し前にリリースされた8.2でのみ追加されたため、次のように簡単に説明できます。https://blog.snapdragon.cc/2020/02/23/direct-fido2-u2f-support-in-openssh-8-2-on-macos/

それ以前は、スマートカードのように扱われるU2Fをサポートしているgpg-agentため、が使用されgpgます。これは、その方法に関する標準的なドキュメントの1つです。https://florin.myip.org/blog/easy-multifactor-authentication-ssh-using-yubikey-neo-tokens

に戻ってgpg-agent、その完全なマニュアルはにありますhttps://www.gnupg.org/documentation/manuals/gnupg/Invoking-GPG_002dAGENT.html#Invoking-GPG_002dAGENT

あなたはですべてのオプションを見つけることができます https://www.gnupg.org/documentation/manuals/gnupg/Agent-Options.html#Agent-Options これは通常、構成ファイルに入れることができます ~/.gnupg/gpg-agent.conf

たとえば、次のことを学ぶことができます。

  1. .extra1つについては、無効にする方法と使用目的の両方を学ぶことができます。
--extra-socket name

追加のソケットはデフォルトで作成されます。このオプションを使用して、ソケットの名前を変更できます。ソケットの作成を無効にするには、名前に「none」または「/ dev / null」を使用します。

また、指定されたソケットでネイティブのgpg-agent接続をリッスンします。この追加のソケットの使用目的は、リモートマシンからローカルマシンのこのソケットに転送するUnixドメインソケットを設定することです。リモートマシンで実行されているgpgは、ローカルのgpg-agentに接続し、その秘密鍵を使用できます。これにより、秘密鍵をリモートマシンに公開することなく、リモートマシン上のデータを復号化または署名できます。

  1. sshサポートの場合、次の.ssh1つです。

--enable-ssh-support

--enable-putty-support

OpenSSH Agentプロトコルは常に有効になっていますが、gpg-agentは、このフラグが指定されている場合にのみSSH_AUTH_SOCK変数を設定します。

この動作モードでは、エージェントはgpg-agentプロトコルだけでなく、OpenSSHによって(別のソケットを介して)使用されるエージェントプロトコルも実装します。したがって、よく知られているssh-agentのドロップイン代替としてgpg-agentを使用できるはずです。

  1. ブラウザソケットおよび使用できる詳細情報については https://wiki.archlinux.org/index.php/GnuPG#gpg-agent それは言う:

gpg-agent主に、キーチェーンのパスワードを要求してキャッシュするデーモンとして使用されます。これは、GnuPGがメールクライアントなどの外部プログラムから使用される場合に役立ちます。gnupgには、デフォルトで有効になっているsystemdユーザーソケットが付属しています。これらのソケットはgpg-agent.socketgpg-agent-extra.socketgpg-agent-browser.socketgpg-agent-ssh.socketdirmngr.socket

maingpg-agent.socketは、gpg-agentデーモンに接続するためにgpgによって使用されます。

gpg-agent-extra.socketローカルシステムでの使用目的は、リモートシステムからのUnixドメインソケット転送を設定することです。これにより、秘密鍵をリモートシステムに公開することなく、リモートシステムでgpgを使用できるようになります。詳細については、gpg-agent(1)を参照してください。

gpg-agent-browser.socket、Webブラウザがgpg-agentデーモンにアクセスできるようにします。

gpg-agent-ssh.socketSSH-追加プログラムによって追加キャッシュSSHキーにSSHで使用することができます。必要な構成については、#SSHエージェントを参照してください。

dirmngr.socketキーサーバーへの接続を処理GnuPGのデーモンを起動します。

ですから、使わなくても害はありません。それらが本当に存在しないことを確認したい場合は、gpg-agent構成ファイルに以下を入れてみてください。

extra-socket /dev/null
browser-socket /dev/null

私はそれをテストしませんでした、ドキュメントは話しませんがbrowser-socket、この古い質問は話します:https://askubuntu.com/questions/777900/how-to-configure-gnupgs-s-gpg-agent-socket-location