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-agent
tiene la opción --enable-ssh-support
que 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-add
su clave GPG después del lanzamiento de gpg-agent
esta 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-agent
deberí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 gpgsm
aceptar mis pares de llaves gpg.
Otras cosas que puedes probar
SSH tiene una -I
opción para especificar la biblioteca compartida PKCS # 11 que ssh
debe usar para comunicarse con un token PKCS # 11 que proporciona la clave RSA privada del usuario.
ssh-keygen
puede 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 -i
y -m
.
Aún así no puedo encontrar una manera de poner todo junto.
flag
enlace debajo de la pregunta), en lugar de publicar la misma respuesta dos veces. ¡Gracias por la respuesta detallada sin embargo!gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsa
. ¿Estás usandotee
solo para que puedas ver la salida? La salida de este comando no es adecuada para ser utilizada porssh-add
; la generadaid_rsa
archivo no se puede cargar en cualquiera de los dosssh-agent
ogpg-agent
, ni puede ser utilizada directamente porssh
.Técnicamente sí, las claves PGP se pueden usar para la autenticación SSH. Lo que las personas llaman una "clave PGP" es más un certificado , que contiene RSA, ECDSA u otros pares de claves (la clave principal y las subclaves) junto con los metadatos del certificado. De hecho, incluso hay un indicador de uso de "autenticación" definido.
Sin embargo, no se recomienda usar la misma clave para múltiples propósitos; sin embargo, esto se resuelve fácilmente, ya que puede agregar fácilmente una subclave de solo autenticación a su certificado PGP (vía
gpg --expert --edit-key
). Tendrá una clave principal de firma / certificación, una subclave de cifrado y una subclave de autenticación.Sin embargo, en la práctica, no he podido descubrir cómo autenticarme usando una clave PGP directamente, aunque he sido demasiado vago para probar varias ideas. La suite Monkeysphere tiene una herramienta para agregar sus subclaves de autenticación GPG a ssh-agent, debería ser simple. Pero debería haber algunas publicaciones antiguas de Superusuario sobre esto.
fuente
monkeysphere subkey-to-ssh-agent
para cargar su clave en el agente.