it-swarm.com.ru

Как мне найти мой отпечаток ключа RSA?

Мне нужно провести аудит ключа SSH для GitHub, но я не уверен, как найти мой отпечаток ключа RSA. Изначально я следовал руководству по настройке Ubuntu 10.04 (Lucid Lynx), размещенного в Linode .

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

793
Zakoff

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

В новых версиях 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.)

1088
Marvin Pinto

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

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

622
anthony

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

25
Komu

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

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

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

    $ ssh-agent bash
    

    или же

    $ ssh-agent tcsh
    

    (или другой Shell, который вы используете).

  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 выше), просто введите «выход» в командной консоли, и вы вернетесь в оболочку до загрузки агента ssh.

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

16
Wirawan Purwanto

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

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

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

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

10
Phil
$ ssh-add -l 

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

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

9
geeklizzard

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

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
7
Bryce Guinta

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

 Enter image description here

4
Dmitri R117

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

2
kenorb

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

/root/.ssh
/root/.ssh/authorized_keys
0
Jesse Mac Dougall

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

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

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

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

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

0
Dan Dascalescu

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

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

0
p974

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

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

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

0
re Paul