
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-agent
en lugar del predeterminado ssh-agent
. Estoy bastante seguro de que todo salió bien: incluso con mi ~/.ssh
directorio eliminado, ssh-add -l
muestra la clave que configuré en gpg.
Después de eso, configuré el contenido de mi control remoto ~/.ssh/authorized_keys
exactamente a la salida local ssh-add -L
y 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-add
para 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ándaruser@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.