AWS EC2 показывает отпечаток SSH2, а не отпечаток OpenSSH, который ожидают все. Это не говорит об этом в пользовательском интерфейсе.
Он также показывает два совершенно разных вида отпечатков пальцев в зависимости от того, был ли ключ сгенерирован в AWS и загружен, или вы загрузили свой собственный открытый ключ.
Отпечатки пальцев, созданные с
ssh-keygen -l -f id_rsa
не будет соответствовать тому, что показывает EC2. Вы можете использовать инструменты AWS API для создания отпечатка пальца с помощью ec2-fingerprint-key
команды или использовать OpenSSL для этого.
Обратите внимание, что если вы изначально сгенерировали ключ в AWS, но затем загрузили его снова (скажем, в другой регион), то вы получите другой отпечаток, потому что для этого потребуется отпечаток RSA SSH2, а не sha1, который он показывает для ключей, которые вы генерируется на AWS.
Весело, эй?
Выше test-generated
было сгенерировано использование AWS EC2. test-generated-reuploaded
является открытым ключом из закрытого ключа AWS, сгенерированного, извлеченного ssh-keygen -y
и загруженного снова. Третий ключ, test-uploaded
это локально сгенерированный ключ ... но локальный ssh-keygen -l
отпечаток 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
Ключи генерируются локально
Вы можете использовать OpenSSL, как продемонстрировал Дэниел на форумах AWS , для генерации отпечатка в форме, используемой AWS для отображения отпечатков пальцев для загруженных открытых ключей (SSH2 MD5), например:
7a:58:3a:a3:df:ba:a3:09:be:b5:b4:0b:f5:5b:09:a0
Их можно сгенерировать, извлекая открытую часть из закрытого ключа и хешируя ее, используя:
openssl pkey -in id_rsa -pubout -outform DER | openssl md5 -c
Ключи, сгенерированные на AWS
Если отпечаток ключа, показанный на консоли AWS, длиннее, то это был закрытый ключ, сгенерированный в AWS, например:
ea:47:42:52:2c:25:43:76:65:f4:67:76:b9:70:b4:64:12:00:e4:5a
В этом случае вам нужно использовать следующую команду, также показанную Дэниелом на форумах AWS, для генерации хэша sha1 на основе закрытого ключа:
openssl pkcs8 -in aws_private.pem -nocrypt -topk8 -outform DER | openssl sha1 -c
в загруженном сгенерированном AWS файле секретного ключа / сертификата. Он будет работать и с ключами, которые вы конвертировали в формат OpenSSH.
Рекомендации
Видеть:
ssh
команде, с более поздними версиями вам нужен параметр -E , чтобы указать формат md5:ssh-keygen -E md5 -l -f id_rsa
.Если у вас есть только открытые ключи, вы можете сгенерировать отпечаток AWS следующим образом:
источник
Есть ресурс по документам AWS http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#verify-key-pair-fingerprints
Если вы создали пару ключей с помощью AWS, вы можете использовать инструменты OpenSSL для создания отпечатка пальца из файла закрытого ключа:
копия
Если вы создали пару ключей с помощью стороннего инструмента и загрузили открытый ключ в AWS, вы можете использовать инструменты OpenSSL для создания отпечатка пальца из файла закрытого ключа на локальном компьютере:
копия
Вывод должен соответствовать отпечатку пальца, отображаемому в консоли.
источник
Это то, что я использую:
Это генерирует отпечаток пальца из открытого ключа, похожего на некоторые из вышеупомянутых.
источник
Для тех из нас, кто использует Python
источник
ValueError: PEM encryption format not supported.
Вот скрипт, который я использую, добавьте путь к скрипту в env. Спасибо J. Doe за ответ
источник
На всякий случай это может быть полезно: https://ssh-vault.com/post/fingerprint/
например:
Распечатает отпечаток пальца для пользователя, соответствующего формату, который использует AWS.
источник
Java (используя BouncyCastle). Если на консоли AWS отображаются более короткие клавиши, попробуйте использовать MD5. (SHA1: 20 байт, MD5: 16 байт).
источник