Mantenga las credenciales de GnuPG en caché para toda la sesión del usuario
53
GnuPG puede, con gpg-agent, acceder a la caché de una clave privada. ¿Cómo puedo mantener esa caché activa para toda la sesión de usuario ?
Cuando desbloqueo la clave gpg-agent, solo permanece en caché durante un tiempo limitado. Con el agente de SSH, ingreso la frase de contraseña una vez y permanece en caché durante toda la sesión. Quiero el mismo comportamiento de gpg-agent.
Por lo tanto, ssh-agentno sufre una vida útil de caché limitada. Pero gpg-agentlimita la vida útil de la memoria caché, al menos por defecto. ¿Cómo puedo eliminar el límite de tiempo de caché de gpg-agent?
La configuración de usuario (in ~/.gnupg/gpg-agent.conf) solo puede definir la duración de almacenamiento en caché predeterminada y máxima; No se puede deshabilitar.
La default-cache-ttlopción establece el tiempo de espera (en segundos) después de la última actividad de GnuPG (por lo que se restablece si lo usa), la maximum-cache-ttlopción establece el intervalo de tiempo (en segundos) que se almacena en caché después de ingresar su contraseña. El valor predeterminado es 600 segundos (10 minutos) para default-cache-ttly 7200 segundos (2 horas) para maximum-cache-ttl.
Ajústelo a un año más o menos, por ejemplo, 34560000 segundos (400 días), y debería estar bien:
Pero para que este cambio surta efecto, debe finalizar la sesión reiniciando gpg-agent.
Si quieres limitar la duración de tu sesión, deberías matar al demonio al cerrar sesión. Esto es muy diferente entre los sistemas operativos, así que me refiero a otra pregunta / respuesta que contiene sugerencias para diferentes sistemas .
También puede reiniciar gpg-agentdurante el inicio de sesión, pero esto no limita el tiempo de almacenamiento en caché a la duración de la sesión, sino los inicios de sesión de un usuario. Decide si este es un problema en tu caso.
GnuPG 2.1 y superior
En GnuPG 2.1 y superior, la maximum-cache-ttlopción fue renombrada max-cache-ttlsin más cambios.
¿Es esta una respuesta de "no puedes hacer lo que estás pidiendo"? No está claro, ya que está hablando de limitar la duración de la sesión o limitar el tiempo de almacenamiento en caché. Quiero exactamente lo contrario de eso: sin límite arbitrario en el tiempo de caché o la duración de la sesión.
bignose
Algo así, solo puede solucionarlo configurando un ttl bastante grande. Ajústelo a un año más o menos y debería estar bien, pero debe finalizar la sesión reiniciando gpg-agent.
Jens Erat
Tenga en cuenta que en las últimas versiones (al menos gnupg 2.1), la maximum-cache-ttlopción no existe. Para ver las opciones correctas, consulte la documentación oficial: gnupg.org/documentation/manuals/gnupg/…
Pablo Olmos de Aguilera C.
3
Al menos en GnuPG 2.1, el valor predeterminado default-cache-ttles 600 segundos (10 minutos), no dos horas.
jlh
@jlh Mirando las páginas del manual para diferentes versiones de gpg-agent, el valor correcto parece ser de 10 minutos para todas las versiones. Edité la respuesta, gracias por señalar esto.
Jens Erat el
7
Para ventanas
El archivo que necesita editar debe colocarse en: $env:AppData\gnupg
Si ejecuta eso en una ventana de PowerShell, se abrirá: C:\Users\<UserName>\AppData\Roaming\gnupg
Simplemente coloque el gpg-agent.confarchivo allí con los valores que desee.
Puede verificar que tomó ejecutando:
gpgconf.exe --reload gpg-agent
gpgconf.exe --list-options gpg-agent
También puedes usar este forro:
Set-Content -Path $env:AppData\gnupg\gpg-agent.conf -Value "default-cache-ttl 86400$([System.Environment]::NewLine)max-cache-ttl 86400"
gpg-agent
.maximum-cache-ttl
opción no existe. Para ver las opciones correctas, consulte la documentación oficial: gnupg.org/documentation/manuals/gnupg/…default-cache-ttl
es 600 segundos (10 minutos), no dos horas.gpg-agent
, el valor correcto parece ser de 10 minutos para todas las versiones. Edité la respuesta, gracias por señalar esto.Para ventanas
El archivo que necesita editar debe colocarse en:
$env:AppData\gnupg
Si ejecuta eso en una ventana de PowerShell, se abrirá:
C:\Users\<UserName>\AppData\Roaming\gnupg
Simplemente coloque el
gpg-agent.conf
archivo allí con los valores que desee.Puede verificar que tomó ejecutando:
gpgconf.exe --reload gpg-agent
gpgconf.exe --list-options gpg-agent
También puedes usar este forro:
Set-Content -Path $env:AppData\gnupg\gpg-agent.conf -Value "default-cache-ttl 86400$([System.Environment]::NewLine)max-cache-ttl 86400"
fuente
Asegúrese de volver a cargar su agente gpg
gpg-connect-agent reloadagent /bye
después de cambiar la configuración.fuente