gpg2 en Mac: ¿Cómo ingresar una frase de contraseña en la terminal en lugar de recibir un mensaje GUI?

gpg2 en Mac: ¿Cómo ingresar una frase de contraseña en la terminal en lugar de recibir un mensaje GUI?

Estoy usando Mountain Lion y cuando cifro un archivo usando gpg, una GUI molesta me solicita que ingrese la frase de contraseña. Me gustaría que se me solicite la frase de contraseña en la terminal, no en una GUI externa. Puede que lo haga de forma remota, por ejemplo.

¿Hay alguna manera de hacer que gpg para mac solicite la frase de contraseña en la terminal y no en un mensaje de GUI?


ACTUALIZAR:Esto parece muy difícil con gpg2, así que bajé a gpg1. Intenté todo con gpg2 (MacGPG2) y nada funcionó. ¡Apesta! ¡Con gpg1 funciona bien!

Respuesta1

Lo siguiente supone que está utilizando gnupg2 con macports, y no MacGPG2, pero la solución probablemente se aplicará a su caso de uso.

Instale el paquete 'pinentry' desde macports:

port -v install pinentry

Edite su ~/.gnupg/gpg-agent.conf para adaptarlo:

pinentry-program /opt/local/bin/pinentry-curses

Elimine o comente la entrada existente del 'programa pinentry'. Recarga tu terminal o usa esto:

echo RELOADAGENT | gpg-connect-agent

Hecho. Ahora debería tener pinentry/frase de contraseña en la terminal (diálogo de maldiciones). Si desea tener el antiguo comportamiento gpg v1.x de pinentry inline-ttl, es posible que pueda utilizar un comando personalizado './configure' con el paquete macports pinentry.

Si ha instalado previamente las herramientas MacGPG2/GPG para Mac, es posible que deba finalizar el proceso 'shutdown-gpg-agent' antes de que funcione el cuadro de diálogo pinentry (o simplemente reiniciar).

user$ ps ax |grep shutdown-gpg-agent
 1854   ??  S      0:00.01 /bin/bash /usr/local/MacGPG2/libexec/shutdown-gpg-agent

user$ kill -KILL 1854

Respuesta2

Puede verificar si está viniendo a través de una sshconexión verificando la variable de entorno SSH_CONNECTION.

export GPG_TTY=$(tty)
if [[ -n "$SSH_CONNECTION" ]] ;then
    export PINENTRY_USER_DATA="USE_CURSES=1"
fi

Utilizo comprobaciones para ver si me estoy sobrepasando ssho sobrepasando tmuxmediante la siguiente comprobación:

export GPG_TTY=$(tty)
if [[ -n "$SSH_CONNECTION" || -n "$TMUX" ]] ;then
    export PINENTRY_USER_DATA="USE_CURSES=1"
fi

Fuente

Respuesta3

Tres palabras: compílelo usted mismo. ¡Si tu puedes hacerlo! ¡Asegúrate de deshacerte primero del archivo gpg-agent.conf!

Respuesta4

Acabo de terminar de compilar GnuPG (versión 2.2.9) y todas sus dependencias para Mac OS High Sierra. Fue bastante interesante. Después de resolver un pequeño problema con las pruebas de libgcrypt (con un poco de ayuda de la receta respectiva de Homebrew), todo funcionó básicamente de inmediato.

Al intentar importar mi clave privada, no pude porque el sistema carecía de un programa pinentry. Una búsqueda rápida me hizo llegar a esta página, pero no fue de mucha ayuda, así que simplemente decidí compilar el pinentry yo mismo.

Ya sabía, por mi experiencia usando GnuPG en máquinas Linux, que me gustaría escribir mi contraseña en un mensaje normal en la línea de comando, sin esos molestos y molestos cuadros de diálogo. Y es por eso que estoy compartiendo el proceso aquí. Es simple, pero podría ayudar a alguien con un problema similar.

Comience obteniendo el código fuente de pinentry de GnuPG. revisa sussitio web. En el momento de escribir este artículo, el enlace para descargar la fuente erahttps://gnupg.org/ftp/gcrypt/pinentry/pinentry-1.1.0.tar.bz2. Descarga también elfirmay verifique la autenticidad usando el propio gpg.

NO TE SALTAS LA VERIFICACIÓN,esto es importante! Este programa tendrá acceso a todas sus contraseñas gpg y claves privadas. ¡Será mejor que te asegures de que es lo que dice ser! Si tiene problemas, asegúrese de haber importado las claves de los mantenedores de GnuPG (veraquí):

$ gpg --verify pinentry-1.1.0.tar.bz2.sig pinentry-1.1.0.tar.bz2

Ahora que está seguro de que está trabajando con archivos fuente auténticos, extraiga el código fuente y cden ese directorio:

$ tar xvf pinentry-1.1.0.tar.bz2
$ cd pinentry-1.1.0

La compilación es muy sencilla:

$ ./configure --enable-pinentry-tty
$ make
$ sudo make install

Puede ser que configurese queje de alguna dependencia faltante. En ese caso, simplemente lea el error y descargue la dependencia desde la página web de GnuPG (¡siempre verificando la integridad de la descarga!).

La parte importante de los comandos anteriores es la bandera --enable-pinentry-tty. Pinentry TTY es la forma más sencilla de escribir su contraseña en un mensaje muy normal y aburrido en la línea de comando. ¡Exactamente lo que quería! Si no me equivoco, la cursesversión se creará de todos modos. Aunque es una opción CLI, la encuentro tan disruptiva como todas las demás.

Una vez instalado, verá algunos archivos binarios nuevos en formato /usr/local/bin. Asegúrate de que te llamen pinentry-tty(si no lo haces, algo salió mal...).

Para que ese nuevo binario sea su forma predeterminada de escribir la contraseña gpg, agregue la siguiente línea ~/.gnupg/gpg-agent.conf(cree el archivo y el directorio si aún no existen):

pinentry-program /usr/local/bin/pinentry-tty

Probablemente no funcione si lo intentas inmediatamente, porque lo más probable es que todavía tengas un agente gpg ejecutándose con una configuración antigua. Continúe y elimine a todos los agentes gpg y cree uno nuevo:

$ sudo killall gpg-agent
$ gpg-agent --daemon

¡Eso es todo! Disfrute de su pinentry TTY de estilo antiguo :)

información relacionada