Gpg.confファイルにuse-agent
という行があります。
これはデーモンであるgpg-agentを指すことを理解しています。マニュアルページには、「gpg-agentは、プロトコルから独立して秘密(プライベート)キーを管理するデーモンです。gpgおよびgpgsmのバックエンドとして、また他のいくつかのユーティリティとして使用されます。」
誰かがこれがgpgのコンテキストで何を意味するのか説明できますか? gpg-agentのポイントは何ですか?
現在、GPG 1.4を使用しています。
Gpg-agentは、バックグラウンド(a daemon )で実行され、メモリにGPG秘密鍵を格納するプログラムです。 GPGプロセスがキーを必要とする場合、GPGプロセスは socket を介して実行中のgpg-agentプログラムに接続し、キーを要求します。エージェントプロセスがキーを持っている場合は、それをgpgに提供します。そうでない場合は、暗号化された鍵を鍵リングからロードしようとし、鍵のパスフレーズの入力を求めます。エージェントは、復号化されたキーを取得すると、それをgpgプロセスに渡します。 GPGキーに加えて、Gpg-agentは同様にSSHキーを格納し、SSHに付属するssh-agent
プログラムのように、それらをSSHプロセスに提供できます。
キーエージェントを使用する主な目的は、キーを使用するたびにパスフレーズを入力する必要がないようにすることです。エージェントは、キーをメモリに保持します。 GPG自体はそれを行うことができません。プロセスがジョブを完了するとプロセスが終了するためです。
キーエージェントが実行できるもう1つのことは、リモートマシンで実行されているGPGがローカルエージェントのキーを取得できるようにすることです(ローカルファイルからキーをロードし、パスフレーズを要求することができます)。 Gpg-agentはまだこれを行うことができません。これは 計画された機能 です。 SSHは非常に長い間エージェント転送を行ってきました。 (これがSSHキーにgpg-agentを使用しない理由です。)
GPG 1.xまたは2.0.xは、GPG_AGENT_INFO
変数が設定されているため、エージェントが実行中であることを認識しています。この変数には、エージェントと通信するためのソケットの場所と、エージェントのプロセスIDが含まれています。 GPG 2.1は常にエージェントソケットを~/.gnupg
に配置します。 GPG 2.xは、エージェントプロセスが実行されていない場合は常に起動します。
gpg-agent
を実行するだけでエージェントを起動できます。エージェントプロセスをセッションの一部として保持する場合は、セッションマネージャーの呼び出しをgpg-agent my-session-manager
;に置き換えることができます。一部のディストリビューションはこれを自動的にセットアップします。 GPGは自動的にエージェントを開始し、GPG 2.1は環境変数を必要とせずに実行中のエージェントを追加で見つけるため、古いバージョンのGPGを使用するか、エージェントを使用して他のタイプを格納しない限り、この方法でエージェントを開始する必要はありません。 SSHなどのキーの。
エージェント コマンド を gpg-connect-agent
シェルで送信できますコマンド。 kill
コマンド を送信して、エージェントプロセスを強制終了します(またはシグナルを送信します)。
Gpg-agentにはGPG自体が付属しています。一部のディストリビューションでは、個別にパッケージ化されています。