Formato de clave pública SSH

11

Tengo una clave pública en el formato:

---- BEGIN SSH2 PUBLIC KEY ----

Comment: "somename-20060227"
AAAAB3NzaC1yc2EAAAABJQAAAIBmhLUTJiP[and so on]==

---- END SSH2 PUBLIC KEY ----

Por lo general, veo claves en el siguiente formato:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAqof[and so on]

¿Puedo copiar la primera clave en el archivo autorizado_claves o tengo que modificarla de alguna manera para que parezca la segunda? Creo que el primero fue generado por PUTTYgen mientras que el segundo fue generado por ssh-keygen.

Hans
fuente

Respuestas:

16

se usa ssh-keygen -ipara convertir el formato compatible con SSH2 al formato compatible con OpenSSH.

de man ssh-keygen:

-i Esta opción leerá un archivo de clave privada (o pública) sin cifrar en formato compatible con SSH2 e imprimirá una clave privada (o pública) compatible con OpenSSH en stdout. ssh-keygen también lee el formato de archivo de clave pública RFC 4716 SSH. Esta opción permite importar claves de varias implementaciones comerciales de SSH.

alexus
fuente
4

Debe convertir la clave pública a la convención openssh:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIBmhLUTJiP[and so on]== somename-20060227

También asegúrese de que la clave ocupa exactamente una línea y que no se introdujeron saltos de línea durante la copia.

Dmitri Chubarov
fuente
4

Esta es la respuesta completa y correcta:

ssh-keygen -i -m PKCS8 -f public-key.pem

Boeboe
fuente
1
"RFC4716" es el formato de clave predeterminado, y -m parece ser para especificar el formato de la ENTRADA en este caso, no la salida, por lo que está en lo correcto.
JimNim
Sin embargo, técnicamente la respuesta "correcta" de alexus NO es incorrecta, ya que esa respuesta no explica la sintaxis completa, solo señala el indicador principal que se debe usar, dejando la necesidad de verificar la sintaxis / uso -i en la página del manual.
JimNim
2

Simplemente vuelva a escribir su clave en un formato adecuado para authorized_keys:

keytype keybody keyname

Tenga en cuenta que "==" al final son marcadores de posición necesarios para mantener la longitud de keyle igual a la longitud deseada.

Kondybas
fuente
44
Los "==" finales son relleno de Base64
Andrew
¿Cómo sé si es RSA o DSA?
Hans