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 ?
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:
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:
gpgconf.exe --reload gpg-agent
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.
gpg-agent
.maximum-cache-ttl
opção não existe. Para ver as opções corretas, consulte a documentação oficial: gnupg.org/documentation/manuals/gnupg/…default-cache-ttl
é 600 segundos (10 minutos), não duas horas.gpg-agent
, o valor correto parece ser 10 minutos para todas as versões. Eu editei a resposta, obrigado por apontar isso.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.conf
arquivo lá com os valores que desejar.Você pode verificar se demorou executando:
gpgconf.exe --reload gpg-agent
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"
fonte
Certifique-se de recarregar seu agente gpg
gpg-connect-agent reloadagent /bye
depois de alterar a configuração.fonte