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-agent
como 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 ps
informa un gpg-agent --supervised
proceso 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-agent
que viene con openssh.
La documentación dice que ssh-add
deberí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-keygen
en gpg-agent
, y por favor alguien puede cortar y pegar una sesión de terminal que muestra cómo funciona este?
Respuestas:
La respuesta aparentemente fue correr:
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 quegpg-agent
proporciona poca visibilidad de dónde se copian sus secretos. Si responde a esta pregunta porque esperaba quegpg-agent
pudiera ser una mejor alternativassh-agent
, entonces le animo a que se quede enssh-agent
lugar de probar mi respuesta. La razón principal para preferirgpg-agent
es si necesita usar tarjetas inteligentes.fuente
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-add
activa cuando se usa con gpg-agent.Eliminar pinentry-emacs e instalar la pinentry GTK resolvió el problema aquí.
fuente