Tenho uma linha em meu arquivo gpg.conf que diz use-agent
.
Eu entendo que isso se refere para o gpg-agent, que é um daemon. A página do manual afirma “gpg-agent é um daemon para gerenciar chaves secretas (privadas) independentemente de qualquer protocolo. É usado como back-end para gpg e gpgsm, bem como para alguns outros utilitários.”
Alguém pode explicar o que isso significa no contexto do gpg? Qual é o objetivo do gpg-agent?
Eu tenho GPG 1.4 no momento.
- Como posso saber se o agente está em execução? Na verdade, não tenho certeza se o gpg-agent está instalado com o pacote básico do GPG 1.4.
- Como posso iniciá-lo, se não estiver em execução?
- Como posso pará-lo, se estiver em execução?
Resposta
O agente Gpg é um programa executado em segundo plano (um daemon ) e armazena chaves secretas GPG na memória. Quando um processo GPG precisa da chave, ele contata o programa gpg-agent em execução por meio de um soquete e solicita a chave. Se o processo do agente tiver a chave, ele a fornecerá ao gpg. Se não tiver, ele tentará carregar a chave criptografada do seu chaveiro e solicita a senha longa da chave. Depois que o agente obtém a chave descriptografada, ele a passa para o processo gpg. Além das chaves GPG, o Gpg-agent pode armazenar chaves SSH e fornecê-las a processos SSH, como ssh-agent
programa que vem com SSH.
O ponto principal de usar um agente chave é para que você não precisa digitar sua frase-senha toda vez que usar sua chave. O agente mantém a chave na memória de um momento para o outro. O próprio GPG não pode fazer isso porque o processo termina assim que terminar seu trabalho.
Outra coisa que um agente-chave pode fazer é permitir que o GPG seja executado em uma máquina remota para obter as chaves no agente local ( que pode carregá-los de um arquivo local e solicitar sua frase-senha). O agente Gpg “ainda não pode fazer isso, é um recurso planejado . SSH teve encaminhamento de agente por um longo tempo. (Esta é uma razão para não use gpg-agent para chaves SSH.)
GPG 1.x ou 2.0.x sabe que o agente está em execução porque a variável GPG_AGENT_INFO
está definida. Esta variável contém a localização do soquete para se comunicar com o agente, bem como o ID do processo do agente. O GPG 2.1 sempre coloca o soquete do agente em ~/.gnupg
. O GPG 2.x sempre inicia um agente processo se não estiver em execução.
Você pode iniciar o agente simplesmente executando gpg-agent
. Se quiser manter um processo de agente como parte de sua sessão, você pode substituir a chamada de seu gerenciador de sessão por gpg-agent my-session-manager
; algumas distribuições configuram isso automaticamente. O GPG iniciará automaticamente o agente e o GPG 2.1 encontrará adicionalmente um agente em execução sem a necessidade de uma variável de ambiente, portanto, você não precisa iniciá-lo dessa forma, a menos que use uma versão mais antiga do GPG ou use o agente para armazenar outros tipos de chaves como SSH.
Você pode enviar ao agente comandos com os gpg-connect-agent
comando shell. Envie o comando kill
para matar o processo do agente (ou enviar a ele um sinal).
O agente Gpg vem com o próprio GPG. Algumas distribuições o empacotam separadamente.
Comentários
- " Quando um processo GPG precisa da chave, ele contata o programa gpg-agent em execução por meio de um soquete e solicita a chave. Se o processo do agente tiver a chave, ele fornece ao gpg. " Um pouco enganador. O agente não fornece uma chave para o processo do cliente. Em vez disso, ele executa orms ações usando a chave, em nome do processo do cliente. (O cliente fornece ao agente algo para assinar, criptografar ou descriptografar, e o agente o faz.) Ao usar um agente, o software cliente SSH e GPG nunca obtém acesso à chave real.
- " O agente Gpg não pode ' fazer isso ainda, é um recurso planejado. SSH teve encaminhamento de agente por muito tempo. (Esta é uma razão para não usar o gpg-agent para chaves SSH.) " Não é bem assim. O gpg-agent funciona bem com o encaminhamento de agente SSH. Eu uso todos os dias. O cliente SSH lida com o encaminhamento, o gpg-agent não está realmente envolvido nisso. O que não é compatível é que o próprio GPG fale com um agente remotamente.