Что такое публичный SSH-ключ?

Публичный SSH-ключ — это одна из двух частей криптографической пары ключей, используемой для безопасной аутентификации по протоколу SSH (Secure Shell). При генерации пары SSH-ключей вы получаете приватный ключ (хранится в тайне на вашем устройстве) и публичный ключ (передаётся серверам, к которым вы хотите получить доступ). Сервер использует ваш публичный ключ для проверки вашей личности без передачи пароля.

Публичные SSH-ключи хранятся в виде одной строки текста в формате OpenSSH и содержат три части: тип ключа (например, ssh-rsa или ssh-ed25519), данные ключа в кодировке Base64 и необязательный комментарий (обычно user@hostname). Внутри данных Base64 содержится структурированная бинарная информация, включающая параметры алгоритма и непосредственно криптографический материал.

Отпечатки (fingerprints) — это короткие, удобочитаемые хэши данных ключа. Они позволяют легко проверять и сравнивать ключи без необходимости читать полную строку Base64. Два наиболее распространённых формата отпечатков — SHA-256 (современный стандарт по умолчанию) и MD5 (устаревший формат с парами шестнадцатеричных символов, разделённых двоеточиями).

Описание инструмента

Этот инструмент разбирает публичные SSH-ключи в формате OpenSSH и извлекает все важные метаданные. Вставьте ваш публичный ключ и мгновенно получите тип ключа, алгоритм, размер ключа в битах, комментарий, а также отпечатки SHA-256 и MD5 — результат совпадает с выводом команды ssh-keygen -l.

Примеры

Входные данные:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl user@laptop

Результат:

Поле Значение
Тип ключа ssh-ed25519
Алгоритм Ed25519
Размер ключа 256 бит
Комментарий user@laptop
Отпечаток SHA-256 SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8
Отпечаток MD5 MD5:16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48

Возможности

  • Поддержка типов ключей RSA, Ed25519, ECDSA (P-256, P-384, P-521), DSA и Security Key (FIDO)
  • Вычисление отпечатков SHA-256 и MD5 в стандартном формате OpenSSH
  • Извлечение размера ключа в битах непосредственно из бинарных данных ключа
  • Проверка структуры ключа, включая целостность Base64 и согласованность встроенного типа
  • Разбор необязательного поля комментария из строки публичного ключа

Принцип работы

Инструмент разбивает входные данные на три части: тип ключа, данные Base64 и комментарий. Затем декодирует данные Base64 в бинарный формат и считывает внутреннюю структуру, используя SSH-формат с префиксом длины, где каждое поле начинается с 4-байтовой длины в формате big-endian, за которой следуют данные поля. Размер ключа определяется на основе параметров, специфичных для алгоритма: для RSA — это битовая длина модуля n, для DSA — простое число p, а для ключей на эллиптических кривых — из названия кривой. Отпечатки вычисляются путём хэширования необработанных бинарных данных ключа с помощью SHA-256 и MD5.

Поддерживаемые типы ключей

Идентификатор типа Алгоритм
ssh-rsa RSA
ssh-ed25519 Ed25519
ecdsa-sha2-nistp256 ECDSA (P-256)
ecdsa-sha2-nistp384 ECDSA (P-384)
ecdsa-sha2-nistp521 ECDSA (P-521)
ssh-dss DSA
sk-ssh-ed25519@openssh.com Ed25519-SK (Security Key)
sk-ecdsa-sha2-nistp256@openssh.com ECDSA-SK (Security Key)

Сценарии использования

  • Проверка отпечатков ключей — убедитесь, что публичный ключ соответствует ожидаемому отпечатку перед добавлением его в authorized_keys или сервис хостинга Git
  • Аудит доступа к серверу — быстро определите алгоритм и размер ключей в файле authorized_keys, чтобы выявить слабые или устаревшие ключи
  • Отладка проблем SSH — проверьте, имеет ли ключ правильный формат, использует ли ожидаемый алгоритм и обладает ли корректной структурой

Часто задаваемые вопросы

Где найти мой публичный SSH-ключ? На большинстве систем он хранится по пути ~/.ssh/id_ed25519.pub, ~/.ssh/id_rsa.pub или аналогичному, в зависимости от алгоритма. Также можно выполнить команду ssh-add -L, чтобы вывести список ключей, загруженных в SSH-агент.

Безопасно ли передавать публичный ключ? Да. Публичный ключ предназначен для передачи другим. Он не может быть использован для получения приватного ключа или аутентификации от вашего имени.

Почему отпечатки SHA-256 и MD5 выглядят по-разному? Отпечатки SHA-256 кодируются в Base64 и имеют префикс SHA256:, тогда как отпечатки MD5 используют шестнадцатеричные пары, разделённые двоеточиями, с префиксом MD5:. SHA-256 является стандартным форматом в современных версиях OpenSSH.