Mantenha as credenciais do GnuPG em cache por toda a sessão do usuário


53

O GnuPG pode, com gpg-agent, armazenar em cache o acesso a uma chave privada. Como manter esse cache ativo por toda a sessão do usuário ?

Quando eu desbloqueio a chave gpg-agent, ela permanece em cache por um tempo limitado. Com o agente do SSH, insiro a senha uma vez e ela permanece em cache por toda a sessão. Eu quero o mesmo comportamento gpg-agent.

Portanto, ssh-agentnão sofre com uma vida útil limitada do cache. Mas gpg-agentlimita a vida útil do cache, pelo menos por padrão. Como posso eliminar o limite de tempo de cachegpg-agent ?

Respostas:


69

Até o GnuPG 2

A configuração do usuário (in ~/.gnupg/gpg-agent.conf) pode definir apenas a duração padrão e máxima do armazenamento em cache; não pode ser desativado.

A default-cache-ttlopção define o tempo limite (em segundos) após a última atividade do GnuPG (para que seja redefinida se você a usar), a opção define o intervalo de maximum-cache-ttltempo (em segundos) que ele armazena em cache após digitar sua senha. O valor padrão é 600 segundos (10 minutos) por default-cache-ttle 7200 segundos (2 horas) por maximum-cache-ttl.

Defina para um ano ou mais - digamos, 34560000 segundos (400 dias) - e você deve ficar bem:

default-cache-ttl 34560000
maximum-cache-ttl 34560000

Mas para que essa alteração entre em vigor, você precisa encerrar a sessão reiniciando o gpg-agent.

Se você quiser limitar o tamanho da sua sessão, precisará matar o daemon no logout. Isso é muito diferente entre sistemas operacionais, por isso estou me referindo a outra pergunta / resposta contendo dicas para diferentes sistemas .

Você também pode reiniciar o gpg-agentdurante o login, mas isso não limita o tempo de armazenamento em cache ao comprimento da sessão, mas faz o logon de um usuário. Decida-se se isso for um problema no seu caso.

GnuPG 2.1 e superior

No GnuPG 2.1 e superior, a maximum-cache-ttlopção foi renomeada para max-cache-ttlsem mais alterações.


Essa é uma resposta do tipo "você não pode fazer o que está pedindo"? Não está claro, já que você está falando sobre limitar a duração da sessão ou o tempo de armazenamento em cache. Eu quero exatamente o oposto disso: nenhum limite arbitrário no tempo do cache ou na duração da sessão.
Bignose

Assim, você só pode solucionar o problema definindo um ttl bastante grande. Defina para um ano ou mais e você deve ficar bem - mas precisa encerrar a sessão reiniciando gpg-agent.
Jens Erat

Observe que nas versões mais recentes (pelo menos gnupg 2.1), a maximum-cache-ttlopção não existe. Para ver as opções corretas, consulte a documentação oficial: gnupg.org/documentation/manuals/gnupg/…
Pablo Olmos de Aguilera C.

3
Pelo menos no GnuPG 2.1, o padrão default-cache-ttlé 600 segundos (10 minutos), não duas horas.
jlh

@jlh Olhando as páginas de manual para diferentes versões do gpg-agent, o valor correto parece ser 10 minutos para todas as versões. Eu editei a resposta, obrigado por apontar isso.
precisa

7

Para Windows

O arquivo que você precisa editar deve ser colocado em: $env:AppData\gnupg

Se você executar isso em uma janela do PowerShell, ela será aberta: C:\Users\<UserName>\AppData\Roaming\gnupg

Basta colocar o gpg-agent.confarquivo lá com os valores que desejar.

Você pode verificar se demorou executando:

  1. gpgconf.exe --reload gpg-agent
  2. gpgconf.exe --list-options gpg-agent

Você também pode usar este liner: Set-Content -Path $env:AppData\gnupg\gpg-agent.conf -Value "default-cache-ttl 86400$([System.Environment]::NewLine)max-cache-ttl 86400"


Se uma segunda resposta aqui não for apropriada, podemos movê-la para sua própria pergunta, marcada com o Windows. Não tenho certeza do que está certo :)
CubanX 23/04

Obrigado e mantenha-o aqui - é bom ter todas as informações em um só lugar. 👍
barfuin 13/06

5

Certifique-se de recarregar seu agente gpg gpg-connect-agent reloadagent /byedepois de alterar a configuração.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.