У меня есть PEM-файл, который я добавляю в работающий ssh-agent:
$ file query.pem
query.pem: PEM RSA private key
$ ssh-add ./query.pem
Identity added: ./query.pem (./query.pem)
$ ssh-add -l | grep query
2048 ef:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX ./query.pem (RSA)
Как я могу получить отпечаток ключа (который я вижу в ssh-agent) прямо из файла? Я знаю, ssh-keygen -l -f some_key
работает для "нормальных" ключей SSH, но не для файлов PEM.
Если я попробую ssh-keygen для файла .pem, я получу:
$ ssh-keygen -l -f ./query.pem
key_read: uudecode PRIVATE KEY----- failed
key_read: uudecode PRIVATE KEY----- failed
./query.pem is not a public key file.
Этот ключ начинается с:
-----BEGIN RSA PRIVATE KEY-----
MIIEp.... etc.
в отличие от «обычного» закрытого ключа, который выглядит так:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,E15F2.... etc.
ssh
openssl
certificate
fingerprint
неизвестный
источник
источник
.ssh/id_rsa
Файл , созданный с помощью OpenSSH с использованием всех значений по умолчанию ЯВЛЯЕТСЯ PEM файл. Закрытые ключи по умолчанию закодированы в PEM. Фактически вы можете использовать ключи RSA, которые вы генерируете с OpenSSL напрямую с OpenSSH.ssh-keygen -l
не может прочитать файл приватного ключа, хотя другие операцииssh-keygen
(иssh*
) делают. Но когдаssh-keygen
генерирует ключ, он записывает как файл privatekey, например, такid_rsa
и соответствующий файл publickey с.pub
добавлением, напримерid_rsa.pub
. Позднееssh-keygen -l
будет пытаться добавлять.pub
к названию файла и чтение этого файла ОткрытыйКлюч.Ответы:
Если вы хотите получить отпечаток потерянного файла открытого ключа, вы можете восстановить его из файла закрытого ключа :
Тогда вы сможете установить публичный отпечаток:
На некоторых более новых системах это печатает отпечаток пальца SHA256 ключа. Вы можете распечатать MD5-отпечаток ключа (двоеточие), используя опцию
-E
:Или как одна командная строка :
источник
AWS « Проверка отпечатка вашей пары ключей » предоставляет два однострочника, которые решают проблему в зависимости от того, как был создан ваш ключ.
Если вы создали свою пару ключей с помощью AWS:
Или, если вы создали свою пару ключей с помощью стороннего инструмента:
(отпечатки пальцев отредактированы в выводе выше)
источник
Вот один вкладыш, который должен делать то, что вы хотите, не требуя создания файла открытого ключа локально.
При этом используется строка bash here
<<<
, чтобы stdin был доступен в виде обычного файла (/dev/stdin
), а не канала, поскольку онssh-keygen
будет работать только с файлом.Начиная с версии 7.2 openssh
ssh-keygen
поддерживает снятие отпечатков пальцев со стандартного ввода:Обратите внимание, что эта команда не работает с закрытыми ключами, которые используют парольную фразу и не используют агент. Он должен работать с файлами pem, сгенерированными AWS или OpenStack, которые не используют парольные фразы.
См. Https://stackoverflow.com/questions/2635360/ssh-keygen-accepting-stdin для получения дополнительной информации.
источник
-l
также поддерживается чтение файла privatekey (но не из stdin).Вы не получаете отпечаток пальца из файла закрытого ключа, но из файла открытого ключа.
На самом деле, ssh-keygen уже сказал вам следующее:
Запустите его против публичной половины ключа, и он должен работать.
Вообще говоря
Подумайте об этом: причина существования отпечатка пальца заключается в том, что вы можете идентифицировать открытый ключ. Фактически, получение хэша закрытого ключа является потенциальной проблемой безопасности, поскольку он бесполезен для сервера (который даже не имеет рассматриваемого закрытого ключа).
Когда у вас есть открытый ключ, процесс должен убедиться, что клиент удерживает соответствующую частную половину. Поскольку вы уже знаете, какие ключи вы пытаетесь проверить, вам не нужен отпечаток пальца.
источник
ssh-keygen
работает с файлом закрытого ключа RSA, который имеет дополнительную информацию в начале (см. Мой первоначальный пост), но не об этом. .ssh-keygen -yf
делает это.