Рассчитать отпечаток ключа RSA

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

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

Ответ 1

Выполните следующую команду, чтобы получить 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.)

Ответ 2

Более новые команды 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 или более новые эклиптические ключи.

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

Ответ 3

Чтобы увидеть свой ключ на 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

Ответ 4

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

Самый проголосовавший ответ Marvin Vinto дает отпечаток открытого файла 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 [email protected] (DSA)
    

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

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

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

Ответ 5

Самый быстрый способ, если ваши ключи находятся в агенте 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)

Ответ 6

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

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

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

Ответ 7

$ ssh-add -l 

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

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

Ответ 8

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

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

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

$ fingerprint ~/.ssh/id_rsa.pub
d2:47:0a:87:30:a0:c0:df:6b:42:19:55:b4:f3:09:b9

Ответ 9

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

Enter image description here

Ответ 10

Если ваш 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.

Ответ 11

Чтобы проверить удаленный SSH-сервер до первого подключения, вы можете посмотреть на www.server-stats.net/ssh/, чтобы увидеть все ключи SHH для сервера, а также после того, как ключ известен.

Это не похоже на SSL-сертификат, но определенно обязательный перед подключением к любому SSH-серверу в первый раз.

Ответ 12

Google Compute Engine показывает отпечаток пальца хоста SSH в последовательном выпуске экземпляра Linux. API может получить эти данные из GCE, и нет необходимости входить в этот экземпляр.

Я не нашел его нигде, кроме серийного выхода. Я думаю, что отпечаток пальца должен быть в другом удобном для программиста месте.

Однако, похоже, это зависит от типа экземпляра. Я использую экземпляры Debian 7 (Wheezy) f1-micro.

Ответ 13

На Fedora я делаю [locate ~/.ssh], который говорит мне, что ключи являются @

/root/.ssh
/root/.ssh/authorized_keys

Ответ 14

Иногда в вашем каталоге ~/.ssh может быть куча ключей, и вы не знаете, какой из них соответствует отпечатку пальца, показанному в GitHub/Gitlab/etc.

Вот как показать имена файлов ключей и отпечатки пальцев MD5 всех ключей в вашем каталоге ~/.ssh:

cd ~/.ssh
find . -type f -exec printf "\n{}\n" \; -exec ssh-keygen -E md5 -lf {} \;

(Что означают параметры, обратитесь к этому ответу о команде find.

Обратите внимание, что личные/публичные файлы, принадлежащие одному ключу, имеют одинаковый отпечаток, поэтому вы увидите дубликаты.