¿Cómo instalo una clave privada SSH generada por PuTTYgen?

50

Configuré mi servidor Linux para aceptar conexiones desde la PC de mi casa agregando la clave pública generada por PuTTYgen al authorized_keysarchivo.

Ahora estoy tratando de conectarme a la misma máquina, pero esta vez desde otra máquina Ubuntu. Tengo que usar la misma clave privada (por una extraña razón, no preguntes ...) y no entiendo cómo instalarla en mi cliente Ubuntu.

¿Tengo que convertirlo a otro formato?

Assaf Lavie
fuente

Respuestas:

25

No estoy seguro de si su clave privada funcionará en ubuntu, pero vale la pena intentarlo. simplemente copie las claves para /home/yourName/.ssh/nombrar la clave privada como id_rsa, y la clave pública como id_rsa.pub.

Si eso no funciona, puede crear su propio par de claves ssh usando ssh-keygeny copiar la nueva clave pública en el servidor, y ssh de la siguiente manera

ssh -i ~/.ssh/id_rsa_ubuntu.pub <hostName>

No he jugado con él, pero escuché que ssh-agent también se puede usar para administrar ssh-keys.

theTuxRacer
fuente
3
Esto funciona en ubuntu. Sin embargo, asegúrese de no sobrescribir una clave id_rsa existente si ya tiene una (copiando la nueva clave encima) a menos que sepa que no usa la antigua.
David Oneill
55
Esta respuesta carece por completo de información, ¿cómo se obtiene el id_rsaarchivo (al convertir la clave en PuTTYgen)
Martin Prikryl
38

Por coincidencia, solo tenía que hacer esto. Es necesario convertir las claves al formato OpenSSH. El comando para hacerlo es:

ssh-keygen -i -f puttygen_key > openssh_key

entonces puede copiar el contenido de openssh_keyin al .ssh/authorized_keysigual que con una clave SSH normal.

La -iopción es la que le dice ssh-keygenque haga la conversión. La -fopción le dice dónde encontrar la clave para convertir.

Esto funciona para claves sin cifrar . La clave pública no está encriptada, pero la privada probablemente esté encriptada. No estoy seguro de si hay una manera de desencriptar la clave privada, convertirla y luego volver a encriptarla. Puede que sea más fácil usar nuevas teclas como sugiere la otra respuesta (y recomendaría usarlas ssh-agentaunque sea ortogonal al problema actual).

Espacio de bucle
fuente
1
Esta respuesta resuelve mi problema. Tuve que convertir la llave. Gracias
leticia
1
Esto solo resuelve parte del problema al convertir la clave pública. También utilicé la respuesta de @ user18617 para convertir la clave privada.
ᴠɪɴᴄᴇɴᴛ
@ ÉdouardLopez puttygen_keydebería ser su clave pública, no su clave privada (* .ppk).
endolito el
28

Andrew Stacey explicó cómo convertir las claves al formato OpenSSH en Linux.

Si desea hacer lo mismo en Windows, siga estos pasos:

  1. Inicie PuTTYGen.
  2. Haga clic en "Cargar".
  3. Seleccione su clave privada e ingrese la frase de contraseña.
  4. En el menú 'Conversiones', seleccione "Exportar clave OpenSSH".
  5. Elija el nombre del archivo de destino.
hheimbuerger
fuente
1
Solo quería decir que esto funcionó para mí en mi Mac OS X, aunque sé que esta es una sección de Ubuntu. Convertí mi clave privada generada en Windows como se describe anteriormente, luego la copié en mi mac a ~ / .ssh / id_rsa. chmod id_rsa 600 para evitar que Mac se queje de eso.
Richard
24

Cómo reutilizar sus pares de claves Putty en Ubuntu como claves OpenSSH:

apt-get install putty-tools #Install Putty tools in Linux
cd /my-putty-keys
puttygen mykey-sec.ppk ‐O private‐openssh ‐o my‐openssh‐key.sec
ssh-keygen -i -f mykey-pub.ppk > my-openssh-key.pub

Dado que el propósito del paso 4 es agregar su clave pública a * ~. / Ssh / Authorized_keys *, puede usar su clave secreta Putty como esta en lugar de hacer 4 como paso intermedio:

puttygen ‐L mykey-sec.ppk >> $HOME/.ssh/authorized_keys
usuario18617
fuente
1
sobre el paso 4: si el nombre de la clave privada era mykey-sec.ppk, el nombre del archivo de origen en este caso generalmente sería mykey-sec.pub.
Kinjal Dixit
2
Nombrar una clave pública (presumiblemente en formato RFC 4716) mykey-pub.ppkes bastante confuso, ya que el .ppkarchivo tiene un formato completamente diferente y se usa para pares de claves (no solo clave pública).
Martin Prikryl
Esa última línea de puttygen funcionó perfectamente para mí después de instalar putty-tools en Debian 9. Las otras líneas y respuestas aquí no funcionaron.
Tim
Extrañamente que estaba recibiendo puttygen: unknown output type `private‐openssh'y puttygen: cannot handle more than one input filepor lo que he copiado exactamente los caracteres desde el código fuente y el nuevo nombre de mi clave pública a algo completamente distinto
CPHPython
como aviso, si intenta ejecutar los comandos en esta respuesta y obtiene "puttygen: no puede manejar más de un archivo de entrada", es probable que el carácter de guión en "private-openssh" no se pegue como un guión ASCII real Así que Puttygen no lo reconoce. En su lugar, escriba la palabra usted mismo y debería funcionar.
Matt Styles
9

PuTTY / PuTTYgen utiliza su propio formato patentado de par de claves. No funcionará en Linux, donde prevalece el formato de claves OpenSSH.

  • En PuTTYgen, puede ver directamente (y copiar + pegar) una clave pública en el formato utilizado por el authorized_keysarchivo OpenSSH .

  • Puede usar el botón Guardar clave pública para guardar la clave pública en el .pubformato (RFC 4716). En Linux, el archivo generalmente se llama id_rsa.pub(o id_dsa.pub). Pero eso generalmente no es necesario.

  • Use la clave Conversiones> Exportar OpenSSH para exportar la clave privada en el formato OpenSSH. En Linux, el archivo generalmente se denomina id_rsa(o id_dsa) y se almacena en la .sshcarpeta.

Vea el uso oficial de PuTTYgen, el generador de claves PuTTY .

También puede usar una versión de Linux de PuTTYgen para realizar la conversión. La versión de Linux es la línea de comandos, a diferencia de la versión de Windows.

puttygen mykey.ppk ‐O private‐openssh ‐o id_rsa

Consulte la puttygenpágina del manual de Linux .

Martin Prikryl
fuente
2

Encontré una solución más clara.

Al puttygencrear una clave, navegue hasta el menú superior - Conversión y haga clic en exportar clave openssh

El contenido del archivo comenzará y terminará con

-----BEGIN RSA PRIVATE KEY----- 

-----END RSA PRIVATE KEY-----
  • para el usuario root Copie ese archivo de clave /root/.ssh/como id_rsaoid_dsa

  • para otro usuario Copie ese archivo de clave /home/user/.ssh/como id_rsaoid_dsa

Nota :

  1. No es necesario editar authorized_keys.
  2. Estoy usando amazon linux
  3. Permiso de archivo 0600
P-Kumar
fuente
1

* * Tenga cuidado y asegúrese de tener acceso de consola a la caja porque si no lo hace bien, no podrá volver a ingresar hasta que lo arregle desde la consola.

El proceso es mucho más fácil de lo que piensas. Cargue el par de claves pública / privada que generó en puttygen nuevamente. En puttygen, notará una ventana en el medio de la pantalla que dice: "Clave pública para pegar en el archivo Open SSH autorizado_claves:".

resalte todo el contenido del cuadro y presione control-c para copiarlo.

SSH en su caja de Linux y péguelo en el archivo "/home/username/.ssh/authorized_keys". Prefiero usar nano y hacer clic derecho para pegarlo. Asegúrese de que todo se mantenga en una línea.

Modifique su archivo / etc / sshd_config según sea necesario y reinicie su servicio sshd: "service ssh restart"

Si necesita un archivo sshd_config de muestra, avíseme y puedo publicar el mío.

He hecho esto en Ubuntu 8.04, 10.04 y 12.04 servidor LTS y funciona muy bien.

ErnestA
fuente
0

No estoy seguro de si este hilo aún está activo, pero me topé con un problema similar con la edición de aniversario de Windows 10 que ahora es compatible con el kernel de Ubuntu. Solía ​​usar Putty antes para conectarme a una máquina Linux. Para generar id_rsa en formato Linux, use puttykeygen y cargue su clave privada de masilla, luego haga clic en conversión y elija la segunda opción.

Masilla Key Conecciones genéricas

abra el archivo de clave recién generado y copie todo su contenido, asegúrese de que su contenido comience con: ----- COMIENCE LA LLAVE PRIVADA RSA ----- y termine con ----- FINALICE LA LLAVE PRIVADA RSA -----

vi id_rsa dentro de su directorio ~ / .ssh y pegue el contenido copiado, esto es necesario porque de lo contrario, Linux no entenderá el contenido del archivo.

Eso es todo, prueba ssh con el servidor remoto, debería funcionar.

desvanecerse
fuente