¿Cómo convertir la clave .ppk a la clave OpenSSH en Linux?


188

Sé que es posible convertir .ppk bajo puttygen en Windows, pero ¿cómo hacerlo en Linux? Es posible ?

Respuestas:


275

Hazlo con masilla.

  • Linux: con su administrador de paquetes, instale PuTTY (o las herramientas PuTTY más mínimas):

    • Ubuntu sudo apt-get install putty-tools
    • Debian-like apt-get install putty-tools
    • Basado en RPM yum install putty
    • Gentoo emerge putty
    • Archlinux sudo pacman -S putty
    • etc.
  • OS X: Instale Homebrew , luego ejecutebrew install putty

Coloque sus claves en algún directorio, por ejemplo, su carpeta de inicio. Ahora convierta las claves PPK en pares de claves SSH: búsqueda de caché

Para generar la clave privada :

cd ~
puttygen id_dsa.ppk -O private-openssh -o id_dsa

y para generar la clave pública :

puttygen id_dsa.ppk -O public-openssh -o id_dsa.pub

Mueva estas claves ~/.sshy asegúrese de que los permisos estén configurados como privados para su clave privada:

mkdir -p ~/.ssh
mv -i ~/id_dsa* ~/.ssh
chmod 600 ~/.ssh/id_dsa
chmod 666 ~/.ssh/id_dsa.pub

Si ya ha intentado realizar una operación ' git clone ', es posible que también deba hacerlo

chmod 666 ~/.ssh/known_hosts

hola ya tengo un .pub, entonces es necesario volver a crear una clave pública
— Amit Bera

1
Si vino aquí buscando cómo hacerlo en Windows, ejecute "puttygen yourkey.ppk" y luego, en el menú Conversiones, elija "Exportar clave OpenSSH" para obtener la clave privada.
— Ryan Shillington

1
la solución de @jous es mucho mejor ya que no necesita la clave privada para convertir una clave pública + no necesita instalar masilla
— Tobi

Tuve que agregar esta clave a mi ./ssh/configarchivo Host mysite.com Hostname mysite.com IdentityFile ~/.ssh/id_dsa IdentitiesOnly yes
— vladkras

Algunos formatos de curva elíptica (ECDS, etc.) solo están disponibles en las herramientas de masilla beta todavía.
— Daniel W.

39
ssh-keygen -i -f id_dsa_1024_a.pub > id_dsa_1024_a_openssh.pub
  • -i la bandera se importa desde otro formato que no sea openssh
  • -f bandera significa leer del archivo de entrada

Fuente: una entrada de blog en burnz.wordpress.com


17
Los archivos .ppk son los pares de claves completos, no creo que el comando anterior o la publicación del blog se apliquen a eso.
— Peter Becker

2
Creo que quise decir que funciona si usa el botón "Guardar clave pública" de puttygen. ssh-keygen no entiende los archivos .ppk verdaderos porque carecen de esos marcadores '---- BEGIN SSH2 PUBLIC KEY ----'. Sin embargo, puede encontrar la clave pública en el archivo .ppk entre las líneas "Líneas públicas: .." y "Líneas privadas: ..".
— jous

1
Esto funcionó para mí con un archivo de clave pública: puttygen parece requerir una clave privada. parece que todo lo que hizo fue reorganizar la parte de base 64 en una sola línea
— Jasen

2
Esto no parece cubrir las claves privadas, por eso me gustaría hacer la conversión, ya tengo una clave pública guardada en alguna parte ...
— Gert van den Berg

Sí, los archivos ppk que he visto tienen los marcadores apropiados, y esto ha funcionado bien .
— tylerl

5

Obtenga la clave privada:

abra el archivo .ppk en puttygen:

puttygen ~/.ssh/id_dsa.ppk

exportar como openssh:

Conversiones → Exportar clave OpenSSH

Obtenga la clave pública:

abrir como antes de la clave privada con puttygen, la clave pública está bajo clave pública para pegar en el archivo OpenSSH Authorizedkeys


4

Preparé un contenedor Docker para simplificar la vida:

docker run --rm \
           --volume=/path/to/file.ppk:/tmp/id_dsa.ppk \
           --volume=/path/to/output:/tmp/out/ \
           czerasz/putty-tools

Dónde:

  • /path/to/file.ppk - ruta local a su archivo ppk
  • /path/to/output - ruta local a donde se debe colocar la clave privada y pública

1
Excelente. Gracias por la imagen! Sin embargo, mientras tanto es --volume=/path/to/file.ppk:/tmp/id.ppky noid_dsa.ppk
— pHiL
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.