¿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 ?

marioosh
fuente

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
Stanley Williams
fuente
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

jous
fuente
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

Bar Horing
fuente
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
czerasz
fuente
1
Excelente. Gracias por la imagen! Sin embargo, mientras tanto es --volume=/path/to/file.ppk:/tmp/id.ppky noid_dsa.ppk
pHiL