¿Cómo usar gpg y SSH juntos? [duplicar]

11

Posible duplicado:
¿Son intercambiables las claves GPG y SSH?

¿Cómo usar gpg y SSH juntos?

Conozco los procedimientos básicos de 1) usar gpg para cifrar y descifrar archivos de texto y 2) generar y usar claves SSH para acceder a servidores remotos sin contraseñas.

Me pregunto si los dos se pueden integrar. ¿Los dos no están relacionados y deben separarse en su uso diario?

qazwsx
fuente

Respuestas:

7

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.

Claudio Floreani
fuente
1
Para referencia futura, si encuentra dos preguntas que son esencialmente idénticas, puede marcarlas como duplicadas (usando el flagenlace debajo de la pregunta), en lugar de publicar la misma respuesta dos veces. ¡Gracias por la respuesta detallada sin embargo!
nhinkle
Lo siento, no sé sobre esta característica. Gracias
Claudio Floreani
2
No estoy seguro de lo que estás tratando de lograr gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsa. ¿Estás usando teesolo para que puedas ver la salida? La salida de este comando no es adecuada para ser utilizada por ssh-add; la generada id_rsaarchivo no se puede cargar en cualquiera de los dos ssh-agento gpg-agent, ni puede ser utilizada directamente por ssh.
larsks
2

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.

usuario1686
fuente
Gracias por la información. Son útiles pero no suficientes para responder mi pregunta. Todavía no sé cómo integrar mis certificados PGP y claves SSH.
qazwsx
De los documentos de Monkeysphere; monkeysphere subkey-to-ssh-agentpara cargar su clave en el agente.
user1686