Мне нужно провести аудит ключа SSH для GitHub, но я не уверен, как найти мой отпечаток ключа RSA. Первоначально я следовал руководству по созданию ключа SSH в Linux.
Какую команду мне нужно ввести, чтобы найти мой текущий отпечаток ключа RSA?
Мне нужно провести аудит ключа SSH для GitHub, но я не уверен, как найти мой отпечаток ключа RSA. Первоначально я следовал руководству по созданию ключа SSH в Linux.
Какую команду мне нужно ввести, чтобы найти мой текущий отпечаток ключа RSA?
Выполните следующую команду, чтобы получить 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.)
Более новые команды 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 или более новые эклиптические ключи.
Для тех "администраторов", которые продолжают редактировать команду, которую я использовал выше. Хватит менять его! Вы делаете команду, и полученный результат не совпадает!
Чтобы увидеть свой ключ на 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
Пара ключей (частные и открытые ключи) будет иметь один и тот же отпечаток; поэтому в случае, когда вы не можете вспомнить, какой частный ключ принадлежит к какому открытому ключу, найдите совпадение, сравнив их отпечатки пальцев.
Самый проголосовавший ответ Marvin Vinto дает отпечаток открытого файла SSH. Также можно запросить отпечаток соответствующего частного SSH-ключа, но для этого требуется более длинная серия шагов, как показано ниже.
Загрузите агент SSH, если вы этого еще не сделали. Самый простой способ - вызвать
$ ssh-agent bash
или
$ ssh-agent tcsh
(или другую оболочку, которую вы используете).
Загрузите закрытый ключ, который хотите проверить:
$ ssh-add /path/to/your-ssh-private-key
Вам будет предложено ввести парольную фразу, если ключ защищен паролем.
Теперь, как говорили другие, введите
$ 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:...
это отпечаток пальца, который вы после. Если имеется несколько клавиш, будет напечатано несколько строк, а последняя строка содержит отпечаток последней загруженной клавиши.
Если вы хотите остановить агент (т.е. Если вы вызвали шаг 1 выше), просто введите "exit" в оболочке, и вы вернетесь в оболочку до загрузки ssh-агента.
Я не добавляю новую информацию, но, надеюсь, этот ответ ясен пользователям всех уровней.
Самый быстрый способ, если ваши ключи находятся в агенте 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)
Воспроизведение контента с форумов AWS здесь, потому что я нашел его полезным для моего варианта использования - я хотел проверить, какие из моих ключей совпадают с ключами, которые я импортировал в AWS
openssl pkey -in ~/.ssh/ec2/primary.pem -pubout -outform DER | openssl md5 -c
Где: - primary.pem
- закрытый ключ для проверки
$ ssh-add -l
также будет работать на Mac OS X v10.8 (Mountain Lion) - v10.10 (Yosemite).
Он также поддерживает опцию -E
для указания формата отпечатка пальца, поэтому, если требуется MD5 (он часто используется, например, GitHub), просто добавьте -E md5
в команду.
Это функция оболочки, которую я использую, чтобы получить мой отпечаток пальца на 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
В Windows, если вы используете PuTTY/Pageant, отпечаток пальца отображается при загрузке ключа PuTTY (.ppk) в Pageant. Это очень полезно, если вы забудете, какой из них вы используете.
Если ваш 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
.
Чтобы проверить удаленный SSH-сервер до первого подключения, вы можете посмотреть на www.server-stats.net/ssh/, чтобы увидеть все ключи SHH для сервера, а также после того, как ключ известен.
Это не похоже на SSL-сертификат, но определенно обязательный перед подключением к любому SSH-серверу в первый раз.
Google Compute Engine показывает отпечаток пальца хоста SSH в последовательном выпуске экземпляра Linux. API может получить эти данные из GCE, и нет необходимости входить в этот экземпляр.
Я не нашел его нигде, кроме серийного выхода. Я думаю, что отпечаток пальца должен быть в другом удобном для программиста месте.
Однако, похоже, это зависит от типа экземпляра. Я использую экземпляры Debian 7 (Wheezy) f1-micro.
На Fedora я делаю [locate ~/.ssh], который говорит мне, что ключи являются @
/root/.ssh
/root/.ssh/authorized_keys
Иногда в вашем каталоге ~/.ssh
может быть куча ключей, и вы не знаете, какой из них соответствует отпечатку пальца, показанному в GitHub/Gitlab/etc.
Вот как показать имена файлов ключей и отпечатки пальцев MD5 всех ключей в вашем каталоге ~/.ssh
:
cd ~/.ssh
find . -type f -exec printf "\n{}\n" \; -exec ssh-keygen -E md5 -lf {} \;
(Что означают параметры, обратитесь к этому ответу о команде find
.
Обратите внимание, что личные/публичные файлы, принадлежащие одному ключу, имеют одинаковый отпечаток, поэтому вы увидите дубликаты.