¿Cómo puedo convertir mi clave secreta PGP cifrada para usarla con la autenticación SSH?

7

Deseo convertir mi clave PGP (RSA) para usarla con la autenticación SSH. Después de algunas búsquedas, encontré openpgp2ssh , que parece ser una herramienta adecuada. Todo funciona perfectamente para mi pubkey:

$ gpg --export "$key" | openpgp2ssh "$key"
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC51Cw3ZxO5TSncaDLzQ89SSZAF7Z9cFR5mv4uhmGw3tDfiaAjNFVjp90YNYi2teveb5EjncIK5RMYQefKpvvsawQZ4KJKbrDFrrQbMmIG67A1qopKxn5rF8QsjzYvrlGSi9pnjfZVN+VfTaspomVpwCpe9oxd8ZlKdViABgBV8p0hL6I4Gqm+I37az9apO4wCvlN8XJMia3J1JxIShyLYGfa2ued5rRFYiCEV3/smtrjycEZ8OYLTLhC/vydhXCSYrCxWHxhv213Uho641cttaL2SlPGDX9Uuq3JfjCoC0Y6EN7/+GV2u9R48/QJpUaOjEhLRm8F/LFRuHDFYJmyNgv11DsRAMvh7psGY2196bBYSdrzfZxxCQDdJrNxNzQvIG33JavMXOiBAbAYxaq7DWWlVPcE3fy+VxYPH+XicqxD58qdWapspJhRxEKzQa7IfUULGQHVg31NYWGsN4dkva2XjV35SZf6M3nrfjz4XitiwH0SOxbXBRKUdZhwCnr+5GcsWkax7Ph6QGvWVP6mgpUDBuMQ+znkUVr8tDkmrm5M6PC6x8SOA0ecdjNKB2NK23A6w4V7lsfMvDl4uBMzxRzXOXLIUXunsZ7MQTV5ymtZvk3oYccnXNxtVZGF2Cu9Wfy+6c+XL+z4Zfc6XvPSgtBDOApV3owL86OOoLO5X3HQ==

Sin embargo, cuando intento convertir mi clave privada para usarla, aparece el siguiente error:

$ gpg --export-secret-key "$key" | openpgp2ssh "$key"
We cannot handle encrypted secret keys.  Skipping!

Mi clave secreta está cifrada. Idealmente, me gustaría un método para convertir mi clave secreta PGP en datos que los programas estándar de SSH puedan entender, en lugar de confiar en complementos no estándar. ¿Es esto posible?

    
pregunta Chris Down 10.12.2011 - 01:16
fuente

3 respuestas

8

Soy uno de los autores anteriores de openpgp2ssh. Perdón por la confusion. Notarás que la página de manual de openpgp2ssh (1) tiene una sección de "ERRORES" que dice:

 openpgp2ssh currently cannot handle passphrase-protected secret keys on
 input.

Si puede proponer un mensaje de error de una línea más claro o una mejora de la página de manual para que pueda encontrar la respuesta más fácil en la documentación, estaremos encantados de mejorar la herramienta. Envíanos una línea a [email protected]. No creo que ninguno de los desarrolladores actuales siga de cerca a stackexchange en este momento, por lo que la lista de correo es una mejor manera de ponerse en contacto.

    
respondido por el Daniel Kahn Gillmor 14.12.2011 - 10:45
fuente
9

No tendría ningún sentido convertir una clave pública si nadie puede convertir la clave privada también, lo que significa que este programa se creó con ese proceso de conversión en mente. Notará que el mensaje de error dice "No podemos manejar claves secretas cifradas".

Por lo tanto, le recomiendo que elimine la contraseña de la clave privada usando el comando passwd en gpg --edit-key . Obviamente, debe volver a cifrar tanto la clave privada antigua gpg como la nueva clave privada ssh después de la conversión.

Si le preocupa que la clave sin cifrar permanezca en la unidad, cree una partición encriptada utilizando encfs, truecrypt, etc., o cree una ramdisk . Debe mantener el disco de ramificación pequeño y de corta duración para evitar que el núcleo lo intercambie, bueno, a menos que encuentre algún truco para llamar a mlock. Cualquier sistema de archivos criptográficos ya debe bloquear sus páginas de datos.

    
respondido por el Jeff Burdges 10.12.2011 - 04:15
fuente
5

La gran respuesta de Jeff Burdges me mostró el método eventual. Aquí están los pasos exactos que tomé:

key=2A7D4D74

# Back up the original key so you can reimport it afterwards
gpg --export-secret-key "$key" > id_rsa.bak

# Now remove the encryption using the method listed in Jeff Burdges' answer:
# * gpg --edit-key "$key"
# * Issue passwd and remove the password
# * Quit, and save changes

# We convert the keys
gpg --export "$key" | openpgp2ssh "$key" > ~/.ssh/id_rsa.pub
gpg --export-secret-key "$key" | openpgp2ssh "$key" > ~/.ssh/id_rsa

# Then, we change the password for the SSH secret key
ssh-keygen -f ~/.ssh/id_rsa -p

# Now reimport the original key (deletion is required or for some reason it fails to reimport as encrypted)
gpg --delete-secret-key "$key"
gpg --import < id_rsa.bak
rm id_rsa.bak
    
respondido por el Chris Down 10.12.2011 - 05:17
fuente

Lea otras preguntas en las etiquetas