Como evitar que o gpg-agent atinja o tempo limite durante a coleta da senha?

Como evitar que o gpg-agent atinja o tempo limite durante a coleta da senha?

Estou solicitando gpg2em um script CLI a criptografia simétrica de um arquivo local. Parece solicitar gpg-agentuma senha por meio de alguma CLI, interface de usuário baseada em texto. Contanto que eu esteja por perto para inserir a senha, tudo funciona bem. Se não estiver, no entanto, eventualmente falhará com esta mensagem:

gpg-agent[15338]: command get_passphrase failed: Operation cancelled
gpg: cancelled by user
gpg: error creating passphrase: Operation cancelled
gpg: symmetric encryption of `XXXX.tar' failed: Operation cancelled

Existe alguma maneira de desativar totalmente esse tempo limite?

Eu gostaria que o prompt da senha permanecesse na tela indefinidamente até que eu digitasse algo.

Responder1

A solução foi encontrada aqui:https://dev.gnupg.org/T3240

O atraso é causado pela consulta do pinentry ao chaveiro do GNOME. Adicione no-allow-external-cacheao seugpg-agent.conf, ou remova gnome-keyring, e mate o gpg-agent atualmente em execução:gpgconf --kill gpg-agent

Responder2

Em gpg-agent.conf (vejaagente gpg(1)), tente as seguintes opções:

pinentry-timeout 0
pinentry-program /usr/bin/pinentry-curses --timeout 0

(Você pode achar pinentry-ttyum pouco mais agradável de usar.)

Responder3

P: "Como evitar que o gpg-agent atinja o tempo limite durante a coleta da senha?"

R: Um caso específico é o uso de gpgem uma sshsessão. A configuração abaixo permiteagente gpgtambém dentro de uma sshsessão. Em particular

  • sem agarrarpermite recortar e colar
  • não permitir cache externodesativa qualquer chaveiro
  • maldições de pinentrypede a senha no terminal em vez do padrãopinheiralperguntando na janela da área de trabalho remota (no caso do ssh).
  • A hora de viverTTL(5,6) está definido para 24 horas. Dessa forma, não é necessário digitar novamente a senha quando, por exemplo, um cron, que invoca um script com gpg-agent, é executado diariamente.
shell> cat ~/.gnupg/gpg-agent.conf
no-grab 
no-allow-external-cache 
pinentry-program /usr/bin/pinentry-curses
default-cache-ttl 86400
max-cache-ttl 86400

Responder4

O que funcionou para mim (gpg 2.1.11) foi apenas definir a pinentry-timeoutopção para um valor grande (como 24 horas), adicionando o seguinte ao meu ~/.gnupg/gpg-agent.confarquivo:

# time until pinentry closes in seconds
pinentry-timeout 86400

informação relacionada