Что такое пара SSH-ключей?

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

Пары SSH-ключей генерируются с использованием алгоритмов криптографии с открытым ключом. Наиболее широко используются Ed25519 — современный алгоритм на эллиптических кривых, известный своим малым размером ключа и высокой безопасностью, и RSA — проверенный временем алгоритм, основанный на сложности факторизации больших целых чисел. Ed25519 рекомендуется для новых ключей благодаря его превосходной производительности и устойчивости к атакам по побочным каналам.

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

Генератор пар SSH-ключей создаёт криптографически стойкие пары SSH-ключей Ed25519 или RSA прямо в вашем браузере, используя Web Crypto API. Никакие данные не отправляются на сервер — весь ключевой материал генерируется локально на вашем устройстве. Вы можете дополнительно добавить комментарий (обычно user@hostname) для идентификации ключа позже. Сгенерированные публичный и приватный ключи можно скопировать в буфер обмена или загрузить как файлы, готовые к использованию с ssh-copy-id или любым SSH-клиентом.

Примеры

Публичный ключ Ed25519

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl user@hostname

Публичный ключ RSA (4096-бит)

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC2... user@hostname

Приватный ключ (формат OpenSSH)

-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAAB...
-----END OPENSSH PRIVATE KEY-----

Возможности

  • Поддержка Ed25519 и RSA: Выберите между современным алгоритмом на эллиптических кривых или классическим алгоритмом RSA
  • Опции размера ключа RSA: Выберите 2048, 3072 или 4096-битные RSA-ключи для баланса между безопасностью и производительностью
  • Опциональное поле комментария: Добавьте комментарий в стиле user@hostname для идентификации ключа на разных машинах
  • Генерация на стороне клиента: Ключи генерируются полностью в вашем браузере с использованием Web Crypto API — ничего не передаётся и не сохраняется
  • Загрузка в один клик: Сохраняйте файлы публичного и приватного ключей напрямую с правильными именами файлов (id_ed25519, id_ed25519.pub, id_rsa, id_rsa.pub)

Варианты использования

  • Настройка доступа к серверу: Сгенерируйте пару ключей один раз и разместите публичный ключ на любом количестве удалённых серверов Linux/Unix через ~/.ssh/authorized_keys для включения входа по SSH без пароля
  • Аутентификация в хостингах Git: Добавьте публичный ключ на GitHub, GitLab или Bitbucket для аутентификации операций git push и git pull без ввода учётных данных каждый раз
  • Конвейеры CI/CD: Создайте выделенную пару ключей развёртывания для автоматизированных скриптов или агентов сборки, которым требуется доступ по SSH к серверам или приватным репозиториям

Как это работает

Генерация ключей использует встроенный API crypto.subtle браузера (Web Crypto). Для Ed25519 сырые 32-байтовый приватный скаляр и 32-байтовый публичный ключ упаковываются в формат SSH wire (openssh-key-v1). Для RSA ключ экспортируется в формат PKCS#8 DER и обёртывается в стандартный конверт PEM. Публичный ключ кодируется в формате SSH wire (имя алгоритма с префиксом длины, за которым следует материал ключа) и кодируется в Base64, соответствуя формату, ожидаемому файлом authorized_keys OpenSSH.

Советы

  • После загрузки установите правильные разрешения на файл приватного ключа: chmod 600 ~/.ssh/id_ed25519. SSH откажется использовать приватный ключ, доступный для чтения другими пользователями.
  • Используйте Ed25519, если вам не требуется совместимость со старыми системами, которые его не поддерживают. Он создаёт более короткие ключи и быстрее, чем RSA.
  • Поле комментария не влияет на криптографическую стойкость ключа — оно предназначено исключительно для идентификации человеком и может быть изменено позже с помощью ssh-keygen -c.
  • Для максимальной совместимости RSA со старыми серверами используйте 4096-битные ключи. Для современных серверов Ed25519 предпочтителен независимо от размера ключа RSA.