El servidor SSH acepta la clave, pero la firma falla

El servidor SSH acepta la clave, pero la firma falla

Recientemente intenté migrar desde una configuración de clave pública ssh estándar a administrar mis claves con GPG. Siguienteinstruccionesen la wiki de mi distribución, configuré ssh para usar gpg-agenten lugar del predeterminado ssh-agent. Estoy bastante seguro de que todo salió bien: incluso con mi ~/.sshdirectorio eliminado, ssh-add -lmuestra la clave que configuré en gpg.

Después de eso, configuré el contenido de mi control remoto ~/.ssh/authorized_keysexactamente a la salida local ssh-add -Ly reinicié el demonio.

Ahora, al intentar conectarme a mi control remoto usando ssh -v <myremote>, aparece el siguiente error:

...
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: (none) RSA SHA256:<myfingerprint> agent
debug1: Server accepts key: (none) RSA SHA256:<myfingerprint> agent
sign_and_send_pubkey: signing failed: agent refused operation
debug1: Trying private key: /home/zoickx/.ssh/id_rsa
debug1: Trying private key: /home/zoickx/.ssh/id_dsa
debug1: Trying private key: /home/zoickx/.ssh/id_ecdsa
debug1: Trying private key: /home/zoickx/.ssh/id_ed25519
debug1: Trying private key: /home/zoickx/.ssh/id_xmss
debug1: No more authentication methods to try.
<myremote>: Permission denied (publickey).

Claramente, el servidor acepta que mi clave pública está autorizada, pero, por una razón que no me queda clara, se niega a continuar.

Las respuestas comunes si se busca en Google " sign_and_send_pubkey: signing failed" son usar ssh-addpara agregar la clave privada que falta o para cambiar los permisos en los archivos de claves. Ninguno de estos parece ser útil en mi caso, usando gpg-agent. Mi clave parece estar disponible para ssh y no hay archivos para cambiar los permisos.

Un par de cosas que me preocupan:

  • No me solicitan la entrada de gpg en ningún momento
  • La clave pública tiene la forma ssh-rsa <key> (none), terminando con el extraño "ninguno" en lugar del estándar user@host.

Información adicional sobre mi configuración:

  • gpp 2.2.15
  • libgcrypt 1.8.4
  • Salida de gpgconf:
gpg:OpenPGP:/usr/bin/gpg
gpg-agent:Private Keys:/usr/bin/gpg-agent
scdaemon:Smartcards:/usr/lib/gnupg/scdaemon
gpgsm:S/MIME:/usr/bin/gpgsm
dirmngr:Network:/usr/bin/dirmngr
pinentry:Passphrase Entry:/usr/bin/pinentry
  • gpg funciona como se esperaba para cifrado/descifrado, con pinentry funcionando
  • No ejecuta Gnome ni ningún otro entorno de escritorio: usa dwm
  • caballito de mar está instalado

Respuesta1

Como no se le solicita que ingrese su contraseña GPG, el problematal vezque el gpg-agent en ejecución no puede acceder a la pantalla/terminal. Encontré los mismos síntomas en Mac OS 10.14 (Mojave) con la versión GPG 2.2.17.

Encontré una solución en la página de manual de gpg-agent:

Nota: en caso de que el agente gpg reciba una solicitud de firma, es posible que se le solicite al usuario una frase de contraseña, que es necesaria para descifrar la clave almacenada. Dado que el protocolo ssh-agent no contiene un mecanismo para decirle al agente en qué pantalla/terminal se está ejecutando, el soporte ssh de gpg-agent utilizará la pantalla TTY o X donde se inició gpg-agent. Para cambiar esta pantalla a la actual, se puede utilizar el siguiente comando:

     gpg-connect-agent updatestartuptty /bye

Si bien no he encontrado una solución permanente, este comando me funciona. Es necesario repetirlo después de cada reinicio.

información relacionada