¿Puedo ingresar mi contraseña gpg solo una vez y desbloquear todas mis claves secundarias (firma, descifrado, autenticación)?
Por el momento, necesito ingresar mi contraseña gpg tres veces (para firmar, para descifrar, para autenticación). Esto es inconveniente.
Traté de crear un script de shell.
#!/bin/bash
set -x
set -e
set +o history
signing_key=77BB3C48
encryption_key=CE998547
tempfile="$(mktemp)"
echo "test" > testfile
unset passphrase || exit 1
read -sp 'Enter password. ' passphrase ; echo
exec 3<<<"$passphrase"
gpg2 --no-tty --use-agent --batch --yes --passphrase-fd 3 --sign-with "$signing_key" --clearsign "$tempfile"
gpg2 --no-tty --use-agent --verify "$tempfile.asc"
gpg2 --no-tty --use-agent --yes --armor --recipient "$encryption_key" --encrypt "$tempfile"
exec 3<<<"$passphrase"
gpg2 --no-tty --use-agent --batch --decrypt --passphrase-fd 3 "$tempfile.asc"
Pero desafortunadamente, de esa manera las contraseñas gnupg-agent no almacenan en caché la contraseña. ¿Se puede arreglar esto?
Información del sistema:
- Cuando no uso ese script de shell, no tengo problemas con gnupg-agent. Cuando firmo / descifro manualmente un archivo en shell, pinentry solicita la contraseña dos veces, luego la almacena en caché hasta que se reinicia.
- Usando Debian Wheezy.
- versión gpg:
dpkg -l | grep gnupg
ii gnupg 1.4.12-7+deb7u3 i386 GNU privacy guard - a free PGP replacement
ii gnupg-agent 2.0.22-3 i386 GNU privacy guard - password agent
ii gnupg-curl 1.4.12-7+deb7u3 i386 GNU privacy guard - a free PGP replacement (cURL)
ii gnupg2 2.0.22-3 i386 GNU privacy guard - a free PGP replacement (new v2.x)
He preguntado en la lista de correo de gnupg-users hace un tiempo, pero no hay respuesta.
¿Quizás esta respuesta funcionaría? Tal vez gpg-connect-agent
se requiere?
shell-script
gpg
gpg-agent
adrelanos
fuente
fuente
exec 3<<<"$passphrase"
era nuevo incluso para mí ... Y acabo de ofrecer una recompensa de 250 repeticiones por la respuesta que usted cita.Respuestas:
Existe el gnome-keyring-daemon y seahorse que hace que la administración de claves y contraseñas sea muy fácil.
Básicamente, si está ejecutando gnome-keyring-daemon como agente gpg, tiene la capacidad de desbloquear sus claves GPG automáticamente. Lo hace manteniendo un llavero de contraseña, que contiene las contraseñas de sitios web, claves GPG, claves SSH, etc. Este llavero de contraseña se asegura con su propia contraseña. Entonces lo desbloqueas, y el llavero de gnomo desbloquea todo lo demás.
Como beneficio adicional, gnome-keyring-daemon tiene un llavero de "inicio de sesión", que si su contraseña coincide con su contraseña de usuario, el llavero se desbloquea automáticamente cuando inicia sesión.
Configuración
¿Cómo hacer que esto funcione? Simplemente instale gnome-keyring-daemon y seahorse. El paquete debe hacer toda la configuración del sistema por usted. Solo asegúrese de no iniciar otro demonio de llavero o agente GPG . Cualquiera que comience el último "gana", y el llavero de gnomo comienza en la pila PAM, muy temprano.
Si sus claves GPG están almacenadas
~/.gnupg
, las recogerá automáticamente y actuará como su agente GPG. Lo mismo ocurre con las claves SSH almacenadas en~/.ssh
La primera vez que intente usar la clave privada, obtendrá un cuadro de diálogo similar al siguiente: (Lo activé mediante una línea de comando simple
gpg -d myfile.gpg
)Simplemente seleccione "Desbloquear este llavero automáticamente cada vez que inicie sesión"
Ahora no hemos hablado realmente sobre el caballito de mar. Eso es porque no es estrictamente necesario. Todo esto se ha hecho solo con el demonio gnomo-llavero regular. Sin embargo, con seahorse puedes ver y administrar todas tus llaves y llaveros. Y si usa la autenticación centralizada (LDAP), deberá usarla cuando cambie su contraseña de inicio de sesión para cambiar también la contraseña en el llavero de "inicio de sesión" para que coincida.
Otras contraseñas
Como se mencionó anteriormente, gnome-keyring-daemon también puede almacenar contraseñas de sitios web. La última vez que verifiqué Chrome admite esto, pero Firefox no. Sin embargo, hay un truco para que funcione.
Por defecto, tendrá 2 llaveros, un llavero de "inicio de sesión" y un llavero "predeterminado". El llavero "predeterminado" es el predeterminado (de ahí el nombre). Pero es un llavero separado, por lo que no se desbloquea automáticamente. En Seahorse, si hace clic con el botón derecho en el llavero "iniciar sesión", hay una opción para "establecer como predeterminado". Seleccione esto y comenzará a acostumbrarse a las contraseñas. Personalmente, simplemente elimino el "predeterminado" y uso "iniciar sesión" para todo.
fuente
sudo apt-get remove gnupg-agent
ysudo apt-get install gnome-keyring seahorse
. Luego creó un archivo/etc/X11/Xsession.d/999gnomekeyring
con el siguiente contenido.eval $(/usr/bin/gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh) export GNOME_KEYRING_CONTROL GNOME_KEYRING_PID GPG_AGENT_INFO SSH_AUTH_SOCK
(De lo contrario, el llavero de gnomo ni siquiera comenzaría en KDE.) Ahora, cuando ejecutogpg -d myfile.gpg
, se me pedirá la contraseña y se guardará en caché, pero nunca se me solicitó este diálogo./etc/X11/Xsession.d
. Eso se supone que debe hacerse en la pila PAM. Debe tener unasession optional pam_gnome_keyring.so auto_start
entrada en uno o más archivos/etc/pam.d
. Lamentablemente no uso Debian, así que no sé cuál. Si eso no está allí, entonces ese es el problema./etc/X11/Xsession.d
,ps aux | grep gnome
muestra que gnome-keyring-daemon no comienza. (Sin embargo, lo eliminó)/usr/share/doc/libpam-gnome-keyring/README.Debian
diceIf you want to start gnome_keyring from another display manager, you need to add the following lines to the corresponding /etc/pam.d/?dm file: auth optional pam_gnome_keyring.so session optional pam_gnome_keyring.so auto_start
(nuevas líneas eliminadas por los comentarios). Hizo eso, agregado a/etc/pam.d/kdm
, reinició kdm. Sin carga de agente, ninguno disponible.kdm
y lo pones/etc/pam.d/kdm
, eso debería haberlo hecho. Lo único que puedo sugerir si aún desea seguir esta ruta es cavar a través de los registros. Perdón por la falsa esperanza, pensé que esta sería una solución simple para ti.He investigado un poco y el resultado me sorprende pero es simple:
Cuando se llama de esta manera, ¡
gpg
no se comunica congpg-agent
nada !gpg
es capaz de realizar todas estas operaciones por sí solo.Pero si
gpg-agent
ni siquiera sabe que algo ha sucedido, difícilmente puede saber una frase de contraseña que no conocía antes.fuente
Can I enter my gpg password just once and unlock all my sub keys (signing, decryption, authentication)?
) Espero ingresar la contraseñagpg-agent
o degpg-connect-agent
alguna manera es posible.