gpg-agent rechaza las claves SSH con informes de ssh-add "agente rechazó operación"

12

Estoy usando openssh7.5p1 y gnupg 2.1.21 en arch linux (estas son las versiones predeterminadas que vienen con arch). Me gustaría usarlo gpg-agentcomo agente ssh. Puse lo siguiente en mi ~/.gnupg/gpg-agent.conf:

pinentry-program /usr/bin/pinentry-qt
enable-ssh-support

Arch inicia automáticamente un agente gpg desde systemd, así que configuré

export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gnupg/S.gpg-agent.ssh"

Cuando ejecuto ssh-add -l, no informa identidades e psinforma un gpg-agent --supervisedproceso como era de esperar.

Desafortunadamente, cuando ejecuto ssh-add, no importa el tipo de clave, no funciona. Aquí hay un ejemplo de cómo probé dsa:

$ ssh-keygen -f testkey -t dsa -N ''
Generating public/private dsa key pair.
Your identification has been saved in testkey.
Your public key has been saved in testkey.pub.
$ ssh-add testkey
Could not add identity "testkey": agent refused operation

Todas las demás funciones de GPG funcionan correctamente (cifrado / descifrado / firma). Además, las claves que genero funcionan bien si las uso directamente con ssh, y funcionan correctamente si ejecuto el ssh-agentque viene con openssh.

La documentación dice que ssh-adddebería agregar claves ~/.gnupg/sshcontrol, pero obviamente no está sucediendo nada.

Mi pregunta: ¿Cuál es la forma más fácil de cargar una clave generada por el de OpenSSH ssh-keygenen gpg-agent, y por favor alguien puede cortar y pegar una sesión de terminal que muestra cómo funciona este?

usuario3188445
fuente
La respuesta aceptada me ayudó, gracias por hacer esta pregunta. Esto me sucede de vez en cuando, ¿hay alguna solución permanente?
gf_

Respuestas:

27

La respuesta aparentemente fue correr:

echo UPDATESTARTUPTTY | gpg-connect-agent

No tengo idea de por qué el programa de pinentry funcionó bien para otros usos, como descifrar archivos, pero no funcionó ssh-add.

Si bien esto ahora funciona, también hace una copia de la clave privada ssh que no aparece debajo gpg -Kv, y además no parece permitirle cambiar la frase de contraseña en su clave privada (ya que no puede editarla con --edit-key) . Básicamente, estoy bastante descontento con la forma en que gpg-agentproporciona poca visibilidad de dónde se copian sus secretos. Si responde a esta pregunta porque esperaba que gpg-agentpudiera ser una mejor alternativa ssh-agent, entonces le animo a que se quede en ssh-agentlugar de probar mi respuesta. La razón principal para preferir gpg-agentes si necesita usar tarjetas inteligentes.

usuario3188445
fuente
¿Dónde encontraste esta respuesta? ¡Funciona muy bien!
CMCDragonkai
Gracias por esto, funcionó para mí. ¿Ejecutas esto regularmente? ¿En cada arranque / inicio de sesión? ¿Alguna idea sobre una solución "adecuada"?
gf_
2

En mi caso, el problema era el programa de pinentry utilizado. Estaba usando pinentry-emacs. Parece que no maneja la ventana de entrada de campo de texto dual que se ssh-addactiva cuando se usa con gpg-agent.

Eliminar pinentry-emacs e instalar la pinentry GTK resolvió el problema aquí.

usuario30747
fuente
Esto finalmente resolvió mi problema después de encontrar un montón de fuentes que me dijeron que actualizara el tty de inicio.
William Rosenbloom