AWS EC2 muestra la huella digital SSH2, no la huella digital OpenSSH que todos esperan. No dice esto en la interfaz de usuario.
También muestra dos tipos completamente diferentes de huellas digitales, dependiendo de si la clave se generó en AWS y se descargó, o si cargó su propia clave pública.
Huellas digitales generadas con
ssh-keygen -l -f id_rsa
será no coincidir con lo que se muestra EC2. Puede usar las herramientas de la API de AWS para generar una huella digital con el ec2-fingerprint-key
comando o usar OpenSSL para hacerlo.
Tenga en cuenta que si originalmente generó una clave en AWS, pero luego la cargó nuevamente (por ejemplo, a otra región), obtendrá una huella digital diferente porque tomará la huella digital SSH2 RSA, en lugar de la sha1 que muestra para las claves que generado en AWS.
Diversión, ¿eh?
En lo anterior, test-generated
se generó utilizando AWS EC2. test-generated-reuploaded
es la clave pública de la clave privada AWS generada, extraída ssh-keygen -y
y cargada nuevamente. La tercera clave, test-uploaded
es una clave generada localmente ... pero la ssh-keygen -l
huella digital local es b2:2c:86:d6:1e:58:c0:b0:15:97:ab:9b:93:e7:4e:ea
.
$ ssh-keygen -l -f theprivatekey
2048 b2:2c:86:d6:1e:58:c0:b0:15:97:ab:9b:93:e7:4e:ea
$ openssl pkey -in theprivatekey -pubout -outform DER | openssl md5 -c
Enter pass phrase for id_landp:
(stdin)= 91:bc:58:1f:ea:5d:51:2d:83:d3:6b:d7:6d:63:06:d2
Claves generadas localmente
Puede usar OpenSSL, como lo demostró Daniel en los foros de AWS , para generar la huella digital en la forma utilizada por AWS para mostrar las huellas digitales de las claves públicas cargadas (SSH2 MD5), como:
7a:58:3a:a3:df:ba:a3:09:be:b5:b4:0b:f5:5b:09:a0
Se pueden generar extrayendo la parte pública de la clave privada y troceándola con:
openssl pkey -in id_rsa -pubout -outform DER | openssl md5 -c
Claves generadas en AWS
Si la huella digital de la llave que se muestra en la consola de AWS es más larga, entonces fue una clave privada generada en AWS, como:
ea:47:42:52:2c:25:43:76:65:f4:67:76:b9:70:b4:64:12:00:e4:5a
En este caso, debe utilizar el siguiente comando, también mostrado por Daniel en los foros de AWS, para generar un hash sha1 basado en la clave privada:
openssl pkcs8 -in aws_private.pem -nocrypt -topk8 -outform DER | openssl sha1 -c
en el archivo de clave / certificado privado generado por AWS descargado. También funcionará en las claves que convirtió al formato OpenSSH.
Referencias
Ver:
ssh
comando, con versiones más recientes que necesita una opción -E para especificar el formato md5:ssh-keygen -E md5 -l -f id_rsa
.Si solo tiene claves públicas, puede generar la huella digital de AWS de la siguiente manera:
fuente
Hay un recurso en documentos de AWS http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#verify-key-pair-fingerprints
Si creó su par de claves con AWS, puede usar las herramientas de OpenSSL para generar una huella digital del archivo de clave privada:
Copiar
Si creó su par de claves con una herramienta de terceros y cargó la clave pública en AWS, puede usar las herramientas de OpenSSL para generar una huella digital desde el archivo de clave privada en su máquina local:
Copiar
El resultado debe coincidir con la huella digital que se muestra en la consola.
fuente
Esto es lo que uso:
Esto genera la huella digital de la clave pública, similar a algunas de las anteriores.
fuente
Para aquellos de nosotros que usamos Python
fuente
ValueError: PEM encryption format not supported.
Aquí hay un script que uso, agregue la ruta del script a env. Gracias a J.Doe por la respuesta.
fuente
En caso de que esto pueda ser útil: https://ssh-vault.com/post/fingerprint/
por ejemplo:
Imprimirá la huella digital para el usuario bob que coincida con el formato que usa AWS.
fuente
Java (usando BouncyCastle). Si la consola de AWS muestra teclas más cortas, intente con MD5. (SHA1: 20 bytes, MD5: 16 bytes).
fuente