AWS EC2 pokazuje odcisk palca SSH2, a nie odcisk palca OpenSSH, którego wszyscy się spodziewają. Nie mówi tego w interfejsie użytkownika.
Pokazuje również dwa zupełnie różne rodzaje odcisków palców w zależności od tego, czy klucz został wygenerowany w AWS i pobrany, czy też przesłałeś własny klucz publiczny.
Odciski palców wygenerowane za pomocą
ssh-keygen -l -f id_rsa
nie będzie pasować do tego, co pokazuje EC2. Możesz użyć narzędzi AWS API do wygenerowania odcisku palca za pomocą ec2-fingerprint-key
polecenia lub użyć OpenSSL, aby to zrobić.
Pamiętaj, że jeśli pierwotnie wygenerowałeś klucz w AWS, ale następnie załadowałeś go ponownie (powiedzmy, do innego regionu), otrzymasz inny odcisk palca, ponieważ pobierze odcisk palca RSH SSH2, a nie sha1, który pokazuje dla kluczy wygenerowane na AWS.
Zabawa, hej?
Powyżej test-generated
został wygenerowany przy użyciu AWS EC2. test-generated-reuploaded
to klucz publiczny z klucza prywatnego wygenerowanego przez AWS, wyodrębnionego ssh-keygen -y
i przesłanego ponownie. Trzeci klucz test-uploaded
to lokalnie generowany klucz ... ale lokalny ssh-keygen -l
odcisk palca to 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
Klucze generowane lokalnie
Możesz użyć OpenSSL, jak zademonstrował Daniel na forach AWS , do wygenerowania odcisku palca w formie używanej przez AWS do wyświetlenia odcisków palców dla przesłanych kluczy publicznych (SSH2 MD5), takich jak:
7a:58:3a:a3:df:ba:a3:09:be:b5:b4:0b:f5:5b:09:a0
Można je wygenerować, wyodrębniając część publiczną z klucza prywatnego i mieszając go za pomocą:
openssl pkey -in id_rsa -pubout -outform DER | openssl md5 -c
Klucze generowane w AWS
Jeśli odcisk klucza pokazany na konsoli AWS jest dłuższy, to był to klucz prywatny wygenerowany w AWS, na przykład:
ea:47:42:52:2c:25:43:76:65:f4:67:76:b9:70:b4:64:12:00:e4:5a
W takim przypadku musisz użyć następującego polecenia, również pokazanego przez Daniela na forach AWS, aby wygenerować skrót sha1 na podstawie klucza prywatnego:
openssl pkcs8 -in aws_private.pem -nocrypt -topk8 -outform DER | openssl sha1 -c
na pobranym pliku klucza prywatnego / certyfikatu wygenerowanym przez AWS. Będzie działać również na kluczach przekonwertowanych na format OpenSSH.
Bibliografia
Widzieć:
ssh
polecenia, z nowszych wersjach trzeba opcji -E Aby określić format md5:ssh-keygen -E md5 -l -f id_rsa
.Jeśli masz tylko klucze publiczne, możesz wygenerować odcisk palca AWS w następujący sposób:
źródło
Istnieje dokument na AWS http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#verify-key-pair-fingerprints
Jeśli utworzyłeś parę kluczy za pomocą AWS, możesz użyć narzędzi OpenSSL do wygenerowania odcisku palca z pliku klucza prywatnego:
Kopiuj
Jeśli utworzyłeś parę kluczy za pomocą narzędzia innej firmy i przesłałeś klucz publiczny do AWS, możesz użyć narzędzi OpenSSL do wygenerowania odcisku palca z pliku klucza prywatnego na komputerze lokalnym:
Kopiuj
Dane wyjściowe powinny być zgodne z odciskiem palca wyświetlanym w konsoli.
źródło
Oto, czego używam:
To generuje odcisk palca z klucza publicznego, podobnie jak niektóre z powyższych.
źródło
Dla tych z nas, którzy używają Pythona
źródło
ValueError: PEM encryption format not supported.
Oto skrypt, którego używam, dodaj ścieżkę skryptu do env. Dziękuję J.Doe za odpowiedź
źródło
Na wszelki wypadek może to być przydatne: https://ssh-vault.com/post/fingerprint/
na przykład:
Wydrukuje odcisk palca dla użytkownika bob pasującego do formatu używanego przez AWS.
źródło
Java (przy użyciu BouncyCastle). Jeśli konsola AWS wyświetla krótsze klawisze, spróbuj z MD5. (SHA1: 20 bajtów, MD5: 16 bajtów).
źródło