Gpg-agentは、バックグラウンド(デーモン)で実行され、GPG秘密鍵をメモリに保存するプログラムです。GPGプロセスがキーを必要とする場合、ソケットを介して実行中の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自体が付属しています。一部のディストリビューションでは、個別にパッケージ化されます。