Рассчитать отпечаток ключа RSA - PullRequest
836 голосов
/ 07 марта 2012

Мне нужно провести аудит ключа SSH для GitHub, но я не уверен, как найти мой отпечаток ключа RSA. Первоначально я следовал руководству по созданию ключа SSH в Linux.

Какую команду мне нужно ввести, чтобы найти мой текущий отпечаток ключа RSA?

Ответы [ 14 ]

1144 голосов
/ 07 марта 2012

Запустите следующую команду, чтобы получить отпечаток SHA256 вашего SSH-ключа (-l означает «список» вместо создания нового ключа, -f означает «имя файла»):

$ ssh-keygen -lf /path/to/ssh/key

Так, например, на моей машине я выполнил команду (используя открытый ключ RSA):

$ ssh-keygen -lf ~/.ssh/id_rsa.pub
2048 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff /Users/username/.ssh/id_rsa.pub (RSA)

Чтобы получить формат отпечатков пальцев GitHub (MD5) с более новыми версиями ssh-keygen, выполните:

$ ssh-keygen -E md5 -lf <fileName>

Информация о бонусе:

ssh-keygen -lf также работает с файлами known_hosts и authorized_keys.

Чтобы найти большинство открытых ключей в системах Linux / Unix / OS X, запустите

$ find /etc/ssh /home/*/.ssh /Users/*/.ssh -name '*.pub' -o -name 'authorized_keys' -o -name 'known_hosts'

(Если вы хотите видеть внутри домашних папок других пользователей, вам нужно быть пользователем root или sudo.)

ssh-add -l очень похож, но в нем перечислены отпечатки пальцев ключей, добавленных к вашему агенту. (Пользователи OS X обращают внимание, что магический SSH без пароля через Keychain - это не то же самое, что использование ssh-agent.)

644 голосов
/ 21 августа 2015

Более новые команды SSH будут выводить отпечатки пальцев в виде SHA256 ключа.

Например:

ssh-keygen -lf ~/.ssh/id_dsa.pub 
1024 SHA256:19n6fkdz0qqmowiBy6XEaA87EuG/jgWUr44ZSBhJl6Y (DSA)

Если вам нужно сравнитьдля защиты от старого отпечатка пальца также необходимо указать MD5 функцию хеширования отпечатка пальца.

ssh-keygen -E md5 -lf ~/.ssh/id_dsa.pub
2048 MD5:4d:5b:97:19:8c:fe:06:f0:29:e7:f5:96:77:cb:3c:71 (DSA)

Также доступно: -E sha1

Обновить ... ДА ... да ... Я знаю ... DSA-ключи для SSH больше не должны использоваться, вместо них следует использовать более старый ключ RSA или более новые эклиптические ключи.

Для тех 'администраторы, которые продолжают редактировать команду, которую я использовал выше.Хватит менять его!Вы делаете команду, и получающийся результат не совпадает!

25 голосов
/ 11 сентября 2013

Чтобы увидеть свой ключ в Ubuntu, просто введите следующую команду на своем терминале:

ssh-add -l

Вы получите такой вывод: 2568 0j:20:4b:88:a7:9t:wd:19:f0:d4:4y:9g:27:cf:97:23 yourName @ ubuntu (RSA)

Если, однако, вы получаете сообщение об ошибке типа;Could not open a connection to your authentication agent.
Тогда это означает, что ssh-agent не запущен.Вы можете запустить / запустить его с помощью: ssh-agent bash (спасибо @Richard в комментариях), а затем перезапустите ssh-add -l

16 голосов
/ 22 ноября 2014

Пара ключей (закрытый и открытый ключи) будет иметь одинаковый отпечаток пальца;так что в случае, если вы не можете вспомнить, какой закрытый ключ принадлежит какому публичному ключу, найдите соответствие, сравнив их отпечатки пальцев.

В ответе Марвина Винто, получившем наибольшее количество голосов, содержится отпечаток открытого Файл ключа SSH.Отпечаток пальца соответствующего частного SSH-ключа также может быть запрошен, но он требует более длинной серии шагов, как показано ниже.

  1. Загрузите агент SSH, еслиты этого не сделал.Самый простой способ - вызвать

    $ ssh-agent bash
    

    или

    $ ssh-agent tcsh
    

    (или другую используемую вами оболочку).

  2. Загрузить закрытый ключ, который выхотите проверить:

    $ ssh-add /path/to/your-ssh-private-key
    

    Вам будет предложено ввести кодовую фразу, если ключ защищен паролем.

  3. Теперь, как уже говорили другие, введите

    $ ssh-add -l
    1024 fd:bc:8a:81:58:8f:2c:78:86:a2:cf:02:40:7d:9d:3c you@yourhost (DSA)
    

    fd:bc:... - это отпечаток, который вы ищете.Если имеется несколько ключей, будет напечатано несколько строк, а последняя строка содержит отпечаток последнего загруженного ключа.

  4. Если вы хотите остановить агента (т. Е. Если вы вызвалишаг 1 выше), затем просто введите `exit 'в оболочке, и вы вернетесь в оболочку до загрузки агента ssh.

Я не добавляю новую информацию, но, надеюсь, этот ответ понятен пользователям всех уровней.

12 голосов
/ 28 сентября 2017

Самый быстрый способ, если ваши ключи находятся в агенте SSH:

$ ssh-add -L | ssh-keygen -E md5 -lf /dev/stdin

Каждый ключ в агенте будет напечатан как:

4096 MD5:8f:c9:dc:40:ec:9e:dc:65:74:f7:20:c1:29:d1:e8:5a /Users/cmcginty/.ssh/id_rsa (RSA)
10 голосов
/ 15 февраля 2017

Воспроизведение контента с AWS форумов здесь, потому что я нашел его полезным для моего варианта использования - я хотел проверить, какой из моих ключей соответствует тем, которые я импортировал в AWS

openssl pkey -in ~/.ssh/ec2/primary.pem -pubout -outform DER | openssl md5 -c

Где: - primary.pem это закрытый ключ для проверки

9 голосов
/ 12 июня 2014
$ ssh-add -l 

также будет работать на Mac OS X v10.8 (Mountain Lion) - v10.10 (Yosemite).

Он также поддерживает опцию -E для указания формата отпечатка пальца, поэтому в случае необходимости MD5 (часто используется, например, GitHub), просто добавьте -E md5 к команде.

7 голосов
/ 20 августа 2017

Это функция оболочки, которую я использую, чтобы получить отпечаток моего ключа SSH для создания DigitalOcean капель:

fingerprint() {
    pubkeypath="$1"
    ssh-keygen -E md5 -lf "$pubkeypath" | awk '{ print $2 }' | cut -c 5-
}

Вставьте его в ~/.bashrc, получите его, и тогда вы сможете получить отпечаток пальца так:

$ fingerprint ~/.ssh/id_rsa.pub
d2:47:0a:87:30:a0:c0:df:6b:42:19:55:b4:f3:09:b9
5 голосов
/ 03 октября 2016

В Windows, если вы запускаете PuTTY / Pageant, отпечаток пальца появляется при загрузке ключа PuTTY (.ppk) в Pageant.Это очень полезно, если вы забыли, какой из них вы используете.

Enter image description here

2 голосов
/ 27 марта 2015

Если ваш SSH-агент работает, то

ssh-add -l

для отображения отпечатков пальцев всех идентификаторов RSA или -L для отображения открытых ключей.

Если ваш агент не работаетпопробуйте:

ssh-agent sh -c 'ssh-add; ssh-add -l'

А для ваших открытых ключей:

ssh-agent sh -c 'ssh-add; ssh-add -L'

Если вы получите сообщение: ' Агент не имеет идентификаторов. ', тогда высначала необходимо сгенерировать ключ RSA ssh-keygen.

...