Мне нужно провести аудит ключа SSH для GitHub, но я не уверен, как найти мой отпечаток ключа RSA. Первоначально я следовал руководству по созданию ключа SSH в Linux.
Какую команду мне нужно ввести, чтобы найти мой текущий отпечаток ключа RSA?
Кстати, я продолжаю возвращаться к этому посту, потому что на github я вижу отпечатки пальцев на клавишах и хочу убедиться, что использую соответствующий закрытый ключ. может быть , это действительно гарантировать GitHub тегу , поскольку этот пост помогает , что GitHub связанного запросу?
hamx0r
4
@ hamx0r Я вернулся к этому посту, потому что Gitlab также использует эти отпечатки пальцев ...
Рэй Фосс,
1
Я пришел к нему из-за Трэвиса, который тоже этим пользуется. : D
Пер Лундберг
4
Для всех тех, кто использует Linux и которые «продолжают возвращаться на эту страницу», скопируйте это на свой bashrc: function fingerprint() { ssh-keygen -lf $1 -E md5 }затем (после того, как вы получите исходный код bashrc), вы можете получить отпечаток пальцаfingerprint ~/.ssh/key_file
Джефф Дидерикс,
1
Для тех, кто пытается использовать функцию @JeffDiederiks и интересуется, почему она не работает, функциям Bash нужен трейлинг ;в теле, поэтому используйте function fingerprint() { ssh-keygen -lf $1 -E md5; }вместо этого.
tjjfvi
Ответы:
1261
Выполните следующую команду, чтобы получить отпечаток SHA256 вашего SSH-ключа ( -lозначает «список» вместо создания нового ключа, -f«имя файла»):
$ ssh-keygen -lf /path/to/ssh/key
Например, на моей машине я выполнил команду (используя открытый ключ RSA):
(Если вы хотите видеть домашние каталоги других пользователей, вам нужно быть пользователем root или sudo.)
Это ssh-add -lочень похоже, но перечисляет отпечатки пальцев клавиш, добавленных к вашему агенту. (Пользователи OS X обращают внимание на то, что магический SSH без пароля через Keychain - это не то же самое, что использование ssh-agent.)
Поскольку ваш пример шестнадцатеричного отпечатка пальца состоит из 32 цифр, я считаю, что это будет отпечаток MD5, верно? В отличие от 40-значного отпечатка пальца, который будет обозначать SHA1
culix
8
На не-Ubuntu системах соответствующий файл может быть в / и т.д. / SSH, например /etc/ssh/ssh_host_rsa_key.pub
Зоравар
12
Стоит отметить, что отпечаток должен быть одинаковым для обоих ключей в паре открытых / закрытых ключей; поэтому отпечаток .ssh/id_rsaдолжен быть таким же, как и для .ssh/id_rsa.pub. Таким образом, вы можете использовать любой из них (и, если вы похожи на меня и любите завершение табуляции, это заставляет работу выполнять на 2 нажатия меньше. Эффективность!).
Парфянский выстрел
25
использование , ssh-keygen -E md5 -lf ~/.ssh/id_rsa.pubесли вы не хотите , стандартный SHA256 выхода
user8162
677
В новых командах SSH отпечатки пальцев будут перечислены как ключ SHA256 .
Обновить ... ДА ... да ... я знаю ... DSA-ключи для SSH больше не должны использоваться, вместо них следует использовать более старый ключ RSA или более новые эклиптические ключи.
Для тех «администраторов», которые продолжают редактировать команду, которую я использовал выше. Хватит менять его! Вы делаете команду, и полученный результат не совпадает!
Здесь стоит упомянуть, что вы можете сказать, sshчтобы показать вам старый отпечаток сервера MD5, используя ssh -o FingerprintHash=md5 example.org, как упоминалось в этом ответе . (Я просто искал это, и этот ответ привел меня к этому, поэтому я полагаю, что у других может быть подобный опыт.)
Джонатан Й.
25
Этот ответ наиболее полезен для тех, кто хочет сравнить свои ключи с тем, что показывает github.com (то есть MD5, отформатированный в шестнадцатеричном формате)
hamx0r
2
Также очень полезно то, что сравнивать с тем, что замазка сообщит.
pjcard
27
Чтобы увидеть свой ключ в Ubuntu, просто введите следующую команду на своем терминале:
ssh-add -l
Вы получите такой вывод:
2568 0j:20:4b:88:a7:9t:wd:19:f0:d4:4y:9g:27:cf:97:23yourName @ ubuntu (RSA)
Однако, если вы получаете сообщение об ошибке типа; Could not open a connection to your authentication agent.
Тогда это означает, что ssh-agent не запущен. Вы можете запустить / запустить его с помощью:
ssh-agent bash(благодаря @Richard в комментариях), а затем перезапуститеssh-add -l
Если вы не в Ubuntu, вы можете получить это, к сожалению, «Не удалось открыть соединение с вашим агентом аутентификации».
rogerdpack
1
Это работает, только если у вас работает агент аутентификации.
Rufflewind
Чтобы запустить агент аутентификации, вы можете использовать ssh-agent bashи продолжить жизнь. В жизни как всегда; ssh-agentне гарантируется как последовательная реализация на всех системах.
Ричард Кеннет Нискиор
Еще один совет для Linux; Опция -F (сбросить отпечаток пальца) ssh-keygen-g3 отобразит отпечаток ключа: $ ssh-keygen-g3 -F /path/to/keyfile.pub answers.ssh.com/questions/494/…
AnneTheAgile
18
Пара ключей (закрытый и открытый ключи) будет иметь один и тот же отпечаток пальца; так что в случае, если вы не можете вспомнить, какой закрытый ключ принадлежит какому публичному ключу, найдите соответствие, сравнив их отпечатки пальцев.
В ответе Марвина Винто, получившем наибольшее количество голосов, содержится отпечаток открытого файла ключа SSH. Также можно запросить отпечаток соответствующего закрытого ключа SSH, но для этого требуется более длинный ряд шагов, как показано ниже.
Загрузите агент SSH, если вы еще этого не сделали. Самый простой способ - вызвать
$ ssh-agent bash
или
$ ssh-agent tcsh
(или другую оболочку, которую вы используете).
Загрузите закрытый ключ, который вы хотите проверить:
$ ssh-add /path/to/your-ssh-private-key
Вам будет предложено ввести кодовую фразу, если ключ защищен паролем.
fd:bc:...это отпечаток, который вы ищете. Если имеется несколько клавиш, будет напечатано несколько строк, а последняя строка содержит отпечаток последней загруженной клавиши.
Если вы хотите остановить агент (т. Е. Если вы вызвали шаг 1 выше), просто введите `exit 'в оболочке, и вы вернетесь в оболочку до загрузки агента ssh.
Я не добавляю новую информацию, но, надеюсь, этот ответ понятен пользователям всех уровней.
Первый абзац неверен ssh-add -lи ssh-keygen -lвозвращает тот же отпечаток для данной пары ключей. Кроме того, он должен быть строчным -l, а не прописным.
Альбертас Агеевас
Я не оспариваю это ssh-add -lи ssh-keygen -lвозвращаю тот же отпечаток для данной пары ключей. Но я не понимаю, что было не так с моими первоначальными утверждениями по первому абзацу. Я добавил предложение, чтобы уточнить.
Wirawan Purwanto
1
Проще указать ssh-keygen на ключ, чем запускать агент, затем загружать ключ и получать отпечаток пальца.
Альбертас Агеевас
1
Если у вас есть только закрытый ключ, запускать его не обязательно ssh-agent. Предполагая PRIVKEY, что для файла с закрытым ключом PUBKEYзадан файл с открытым ключом (изначально не существовавший), выполните: ssh-keygen -y -f "${PRIVKEY}" > "${PUBKEY}"для регенерации открытого ключа SSH, затем, ssh-keygen -E md5 -l -v -f "${PUBKEY}"если вы хотите использовать хэш MD5 или просто, ssh-keygen -l -v -f "${PUBKEY}"если вы хотите использовать хэш SHA-256 (SHA-256 сейчас используется по умолчанию).
Дэвид Тонхофер
12
Самый быстрый способ, если ваши ключи находятся в агенте SSH:
Нужен более быстрый способ сопоставления моих ключей с ключами на моей учетной записи GitHub, и этот ответ помог мне сделать именно это.
evanjs
11
Воспроизведение контента с форумов AWS здесь, потому что я нашел его полезным для моего варианта использования - я хотел проверить, какие из моих ключей соответствуют тем, которые я импортировал в AWS
Он также поддерживает возможность -Eуказать формат отпечатка пальца, поэтому, если требуется MD5 (он часто используется, например, GitHub), просто добавьте -E md5команду.
+1 за самый простой ответ. С man ssh-addопцией -lявляется «списки Отпечатки пальцев всех идентичностей в настоящее время в лице агента»
XavierStuvw
8
В Windows, если вы используете PuTTY / Pageant, отпечаток пальца появляется при загрузке ключа PuTTY (.ppk) в Pageant. Это очень полезно, если вы забыли, какой из них вы используете.
Я установил openssh, затем попытался подключиться к серверу, используя putty. Он представляет 256-отпечаток ключа ssh-ed25519, но я получаю сообщение «нет идентификаторов». Вы знаете, где этот ключ можно найти и перечислить? Есть ли недостаток в использовании этого ключа по сравнению с генерацией нового ключа RSA?
Lordcheeto
Нашел под /etc/ssh/ssh_host_ed25519_key.pub. Вторая часть вопроса остается: есть ли недостатки использования этого автоматически сгенерированного ключа?
Lordcheeto
1
Иногда в вашем ~/.sshкаталоге может быть несколько ключей , и вы не знаете, какой из них соответствует отпечатку пальца, показанному в GitHub / Gitlab / etc.
Вот как показать имена файлов ключей и отпечатки пальцев MD5 всех ключей в вашем ~/.sshкаталоге:
cd ~/.ssh
find .-type f -exec printf "\n{}\n" \; -exec ssh-keygen -E md5 -lf {} \;
Google Compute Engine показывает отпечаток ключа хоста SSH в последовательном выводе экземпляра Linux. API может получать эти данные из GCE, и нет необходимости входить в экземпляр.
Я не нашел его нигде, кроме как с серийного выхода. Я думаю, что отпечаток должен быть в более дружественном для программиста месте.
Однако, похоже, что это зависит от типа экземпляра. Я использую экземпляры Debian 7 (Wheezy) f1-micro.
Чтобы проверить удаленный сервер SSH перед первым подключением, вы можете посмотреть на сайте www.server-stats.net/ssh/, чтобы увидеть все ключи SHH для сервера, а также информацию о том, когда ключ известен.
Это не похоже на SSL-сертификат, но, безусловно, необходимо сделать перед первым подключением к любому SSH-серверу.
Пользователь не ищет сторонний сайт, а командную строку из самой ОС.
Эндрю Барбер
Таким образом, это в основном плагин конвергенции , за исключением SSH вместо SSL, и только с одним (несколько сомнительным) нотариусом. Это звучит правильно?
Парфянский выстрел
-1
На Fedora я делаю locate ~/.sshчто говорит мне ключи находятся на
function fingerprint() { ssh-keygen -lf $1 -E md5 }
затем (после того, как вы получите исходный код bashrc), вы можете получить отпечаток пальцаfingerprint ~/.ssh/key_file
;
в теле, поэтому используйтеfunction fingerprint() { ssh-keygen -lf $1 -E md5; }
вместо этого.Ответы:
Выполните следующую команду, чтобы получить отпечаток SHA256 вашего SSH-ключа (
-l
означает «список» вместо создания нового ключа,-f
«имя файла»):Например, на моей машине я выполнил команду (используя открытый ключ RSA):
Чтобы получить формат отпечатка пальца GitHub (MD5) с новыми версиями ssh-keygen, запустите:
Информация о бонусе:
ssh-keygen -lf
также работает наknown_hosts
иauthorized_keys
файлы.Чтобы найти большинство открытых ключей в системах Linux / Unix / OS X, запустите
(Если вы хотите видеть домашние каталоги других пользователей, вам нужно быть пользователем root или sudo.)
Это
ssh-add -l
очень похоже, но перечисляет отпечатки пальцев клавиш, добавленных к вашему агенту. (Пользователи OS X обращают внимание на то, что магический SSH без пароля через Keychain - это не то же самое, что использование ssh-agent.)источник
.ssh/id_rsa
должен быть таким же, как и для.ssh/id_rsa.pub
. Таким образом, вы можете использовать любой из них (и, если вы похожи на меня и любите завершение табуляции, это заставляет работу выполнять на 2 нажатия меньше. Эффективность!).ssh-keygen -E md5 -lf ~/.ssh/id_rsa.pub
если вы не хотите , стандартный SHA256 выходаВ новых командах SSH отпечатки пальцев будут перечислены как ключ SHA256 .
Например:
Если вам нужно сравнить его со старым отпечатком пальца, вам также необходимо указать функцию хеширования отпечатка пальца MD5 .
Также доступны:
-E sha1
Обновить ... ДА ... да ... я знаю ... DSA-ключи для SSH больше не должны использоваться, вместо них следует использовать более старый ключ RSA или более новые эклиптические ключи.
Для тех «администраторов», которые продолжают редактировать команду, которую я использовал выше. Хватит менять его! Вы делаете команду, и полученный результат не совпадает!
источник
ssh
чтобы показать вам старый отпечаток сервера MD5, используяssh -o FingerprintHash=md5 example.org
, как упоминалось в этом ответе . (Я просто искал это, и этот ответ привел меня к этому, поэтому я полагаю, что у других может быть подобный опыт.)Чтобы увидеть свой ключ в 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
источник
ssh-agent bash
и продолжить жизнь. В жизни как всегда;ssh-agent
не гарантируется как последовательная реализация на всех системах.Пара ключей (закрытый и открытый ключи) будет иметь один и тот же отпечаток пальца; так что в случае, если вы не можете вспомнить, какой закрытый ключ принадлежит какому публичному ключу, найдите соответствие, сравнив их отпечатки пальцев.
В ответе Марвина Винто, получившем наибольшее количество голосов, содержится отпечаток открытого файла ключа SSH. Также можно запросить отпечаток соответствующего закрытого ключа SSH, но для этого требуется более длинный ряд шагов, как показано ниже.
Загрузите агент SSH, если вы еще этого не сделали. Самый простой способ - вызвать
или
(или другую оболочку, которую вы используете).
Загрузите закрытый ключ, который вы хотите проверить:
Вам будет предложено ввести кодовую фразу, если ключ защищен паролем.
Теперь, как уже говорили другие, введите
fd:bc:...
это отпечаток, который вы ищете. Если имеется несколько клавиш, будет напечатано несколько строк, а последняя строка содержит отпечаток последней загруженной клавиши.Если вы хотите остановить агент (т. Е. Если вы вызвали шаг 1 выше), просто введите `exit 'в оболочке, и вы вернетесь в оболочку до загрузки агента ssh.
Я не добавляю новую информацию, но, надеюсь, этот ответ понятен пользователям всех уровней.
источник
ssh-add -l
иssh-keygen -l
возвращает тот же отпечаток для данной пары ключей. Кроме того, он должен быть строчным-l
, а не прописным.ssh-add -l
иssh-keygen -l
возвращаю тот же отпечаток для данной пары ключей. Но я не понимаю, что было не так с моими первоначальными утверждениями по первому абзацу. Я добавил предложение, чтобы уточнить.ssh-agent
. ПредполагаяPRIVKEY
, что для файла с закрытым ключомPUBKEY
задан файл с открытым ключом (изначально не существовавший), выполните:ssh-keygen -y -f "${PRIVKEY}" > "${PUBKEY}"
для регенерации открытого ключа SSH, затем,ssh-keygen -E md5 -l -v -f "${PUBKEY}"
если вы хотите использовать хэш MD5 или просто,ssh-keygen -l -v -f "${PUBKEY}"
если вы хотите использовать хэш SHA-256 (SHA-256 сейчас используется по умолчанию).Самый быстрый способ, если ваши ключи находятся в агенте SSH:
Каждый ключ в агенте будет напечатан как:
источник
Воспроизведение контента с форумов AWS здесь, потому что я нашел его полезным для моего варианта использования - я хотел проверить, какие из моих ключей соответствуют тем, которые я импортировал в AWS
openssl pkey -in ~/.ssh/ec2/primary.pem -pubout -outform DER | openssl md5 -c
Где: -
primary.pem
закрытый ключ для проверкиисточник
также будет работать на Mac OS X v10.8 (Mountain Lion) - v10.10 (Yosemite).
Он также поддерживает возможность
-E
указать формат отпечатка пальца, поэтому, если требуется MD5 (он часто используется, например, GitHub), просто добавьте-E md5
команду.источник
man ssh-add
опцией-l
является «списки Отпечатки пальцев всех идентичностей в настоящее время в лице агента»В Windows, если вы используете PuTTY / Pageant, отпечаток пальца появляется при загрузке ключа PuTTY (.ppk) в Pageant. Это очень полезно, если вы забыли, какой из них вы используете.
источник
Это функция оболочки, которую я использую, чтобы получить отпечаток моего ключа SSH для создания капель DigitalOcean :
Поместите это в свой
~/.bashrc
источник, и тогда вы можете получить отпечаток пальца так:источник
Если ваш агент SSH работает, это
для перечисления отпечатков пальцев RSA всех идентификаторов или
-L
для перечисления открытых ключей.Если ваш агент не работает, попробуйте:
И для ваших открытых ключей:
Если вы получите сообщение: « У агента нет идентификаторов. ', тогда вы должны
ssh-keygen
сначала сгенерировать свой ключ RSA .источник
/etc/ssh/ssh_host_ed25519_key.pub
. Вторая часть вопроса остается: есть ли недостатки использования этого автоматически сгенерированного ключа?Иногда в вашем
~/.ssh
каталоге может быть несколько ключей , и вы не знаете, какой из них соответствует отпечатку пальца, показанному в GitHub / Gitlab / etc.Вот как показать имена файлов ключей и отпечатки пальцев MD5 всех ключей в вашем
~/.ssh
каталоге:(Что означают параметры, обратитесь к этому ответу о
find
команде .Обратите внимание, что личные / публичные файлы, принадлежащие одному ключу, имеют одинаковый отпечаток, поэтому вы увидите дубликаты.
источник
Google Compute Engine показывает отпечаток ключа хоста SSH в последовательном выводе экземпляра Linux. API может получать эти данные из GCE, и нет необходимости входить в экземпляр.
Я не нашел его нигде, кроме как с серийного выхода. Я думаю, что отпечаток должен быть в более дружественном для программиста месте.
Однако, похоже, что это зависит от типа экземпляра. Я использую экземпляры Debian 7 (Wheezy) f1-micro.
источник
Чтобы проверить удаленный сервер SSH перед первым подключением, вы можете посмотреть на сайте www.server-stats.net/ssh/, чтобы увидеть все ключи SHH для сервера, а также информацию о том, когда ключ известен.
Это не похоже на SSL-сертификат, но, безусловно, необходимо сделать перед первым подключением к любому SSH-серверу.
источник
На Fedora я делаю
locate ~/.ssh
что говорит мне ключи находятся наисточник
~/.ssh/id*.pub
есть), и хочет получить свои отпечатки пальцев.