Estoy investigando sobre este tema y puedo darte algunas pistas, pero todavía no he encontrado una manera de hacerlo funcionar.
Monosfera
Monkeysphere parece un proyecto muy interesante, pero no he podido compilarlo en Mac OS X sin obstruir mi pequeño espacio libre en disco con MacPorts.
Usando gpgkey2ssh
La primera forma en que le sugiero que intente es generar una entrada compatible de claves autorizadas a partir de su ID de clave (por ejemplo, BFB2E5E3) con:
gpgkey2ssh BFB2E5E3 | tee -a ~/.ssh/authorized_keys
Aquí lo agregué a mi localhost ya que ejecuté un servidor ssh con fines de prueba, pero por supuesto, debe agregar esto al host de destino ~/.ssh/authorized_keys. A continuación, debe decirle a SSH que use la parte privada de esta clave durante la autenticación, pero simplemente no exporta una versión blindada ASCII del par de claves:
gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsa
gpg --armor --export BFB2E5E3! | tee ~/.ssh/id_rsa.pub
chmod 400 ~/.ssh/id_rsa
ssh localhost
Usando gpg-agent
gpg-agenttiene la opción --enable-ssh-supportque le permite usarlo como un reemplazo directo para lo conocido ssh-agent. He leído sobre algunas personas que intentan agregar a través de ssh-addsu clave GPG después del lanzamiento de gpg-agentesta manera:
gpg-agent --enable-ssh-support --daemon
gpg --armor --export-secret-key BFB2E5E3! | tee ~/.gnupg/exported-keys/BFB2E5E3_sec.asc
ssh-add ~/.gnupg/exported-keys/BFB2E5E3_sec.asc
Pero no creo que esto funcione nunca. La página de manual de gpg-agent dice:
Las claves SSH, que se utilizarán a través del agente, deben agregarse al agente gpg inicialmente a través de la utilidad ssh-add. Cuando se agrega una clave, ssh-add solicitará la contraseña del archivo de clave proporcionado y enviará el material de la clave desprotegida al agente; esto hace que el agente gpg solicite una frase de contraseña, que se utilizará para cifrar la clave recién recibida y almacenarla en un directorio específico del agente gpg.
Por lo tanto, parece que gpg-agentdebería usarse como una medida adicional para proteger sus claves SSH con un cifrado GPG.
Convertir una clave GPG a OpenSSH
Jérôme Pouiller en su blog escribe que la utilidad Gpgsm puede exportar claves y certificados en PCSC12; luego pueden ser utilizados por OpenSSH:
gpgsm -o secret-gpg-key.p12 --export-secret-key-p12 0xXXXXXXXX
openssl pkcs12 -in secret-gpg-key.p12 -nocerts -out gpg-key.pem
chmod 600 gpg-key.pem
cp gpg-key.pem ~/.ssh/id_rsa
ssh-keygen -y -f gpg-key.pem > ~/.ssh/id_rsa.pub
Pero no he encontrado una manera de hacer gpgsmaceptar mis pares de llaves gpg.
Otras cosas que puedes probar
SSH tiene una -Iopción para especificar la biblioteca compartida PKCS # 11 que sshdebe usar para comunicarse con un token PKCS # 11 que proporciona la clave RSA privada del usuario.
ssh-keygenpuede usar la clave pública o privada RFC4716 / SSH2, las claves públicas PEM PKCS8 y las claves públicas PEM para generar una clave privada (o pública) compatible con OpenSSH utilizando las opciones -iy -m.
Aún así no puedo encontrar una manera de poner todo junto.
flagenlace debajo de la pregunta), en lugar de publicar la misma respuesta dos veces. ¡Gracias por la respuesta detallada sin embargo!