Respuestas:
Sé que esta es una publicación antigua, pero para personas como yo tropezamos con esto:
Ahora es (ya que gpg 2.1) posible simplemente extraer las claves ssh directamente usando gpg:
gpg --export-ssh-key <key id>!
.
La !
marca es opcional, hace que la clave principal se pueda exportar y omite verificar si la clave tiene capacidad de autenticación ([CA]).
Detalles:
Estoy investigando sobre este tema y puedo darte algunas pistas, pero todavía no he encontrado una manera de hacerlo funcionar.
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.
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 para fines de prueba, pero, por supuesto, debe agregar esto al host de destino ~/.ssh/authorized_keys
. A continuación, debe indicarle a SSH que use la parte privada de esta clave durante la autenticación, pero simplemente no funciona exportar 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
gpg-agent
tiene la opción --enable-ssh-support
que le permite usarlo como un reemplazo directo para los conocidos ssh-agent
. He leído sobre algunas personas que intentan agregar a través de ssh-add
su clave GPG después de iniciar 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 sin protección 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.
Parece que gpg-agent
debería usarse como una medida adicional para proteger sus claves SSH con un cifrado GPG.
Jérôme Pouiller en su blog escribe que la utilidad Gpgsm puede exportar claves y certificados en PCSC12; entonces 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 gpgsm
aceptar mis pares de llaves gpg.
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 usando las opciones -i
y -m
.
Aún así no puedo encontrar una manera de poner todo junto.
gpgkey2ssh
ha sido reemplazado por la --export-ssh-key
versión 2.1.11 (2016-01-26). Me tomó un tiempo darme cuenta de esto. El uso es gpg --export-ssh-key BFB2E5E3
.
No, no son intercambiables. Sí, es posible usar claves GPG para la autenticación: el paquete Monkeysphere tiene herramientas para extraer el par de claves RSA sin formato de su certificado GPG.
Su certificado GPG necesitará una subclave con el indicador de capacidad de "autenticación". Para crear una subclave, ejecute una vez:
monkeysphere g
Ahora agregue sus subclaves de autenticación a ssh-agent :
monkeysphere s
Algo relevante: este hilo de gnupg-users .
Con la información de las respuestas a esta pregunta y la ayuda de la lista de correo gnupg-users pude descubrir cómo usar mi clave GPG para la autenticación SSH. Como ya mencionó Claudio Floreani en su respuesta, hay algunos métodos posibles para hacer esto.
He escrito una entrada de blog sobre algunas posibles soluciones: http://budts.be/weblog/2012/08/ssh-authentication-with-your-pgp-key
Para resumir: o usas GnuPG 2.1, que actualmente está en versión beta. Al usar esta versión, simplemente puede iniciar gpg-agent con la opción --enable-ssh-support y agregar el keygrip para su clave GPG (o subclave) en ~ / .gnupg / sshcontrol.
Cuando usa la versión actual estable de GnuPG (2.0.x), puede usar monkeysphere para agregar su clave a gpg-agent (nuevamente, después de iniciar gpg-agent con la opción --enable-ssh-support).
También es posible usar el llavero GNOME (o incluso el agente ssh regular) con la ayuda de monkeysphere. El único problema en este caso es que tendrá que volver a agregar su clave cuando vuelva a iniciar sesión (en Gnome o XFCE). Para resolver esto, puede exportar manualmente su clave y convertirla.