Понимание различных типов SSH ключей

Что такое SSH ключи

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

Типы SSH ключей

Типы криптографических SSH ключей включают:

  • RSA — самый старый и распространённый алгоритм, основанный на использовании парных ключей (приватного и публичного).
  • DSA — алгоритм цифровой подписи, использующий хеш-функцию для создания дайджеста сообщения и подписывающий его с помощью секретного ключа.
  • ECDSA — алгоритм цифровой подписи на основе эллиптических кривых, использующий математические свойства эллиптических кривых для генерации ключей и выполнения операций над ними.
  • Ed25519 — новый алгоритм, основанный на криптографии на решётках, использующий короткие и быстрые операции для генерации ключей и подписи сообщений.

RSA SSH ключи

RSA — один из самых распространённых и широко используемых типов ключей. Ключи RSA используют алгоритм RSA для шифрования и считаются безопасными, рекомендуемый минимальный размер ключа — 2048 бит.

Пример публичного ключа RSA:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCba21UHE+VbDTpmYYFZUOV+OQ8AngOCdjROsPC0KiEfMvEaEM3NQl58u6QL7G7QsErKViiNPm9OTFo6HF5JijfWzK7haHFuRMEsgI4VwIYyhvqlJDfw/wt0AiVvSmoMfEQn1p1aiaO4V/RJSE3Vw/uz2bxiT22uSkSqOyShyfYE6dMHnuoBkzr4jvSifT+INmbv6Nyo4+AAMCZtYeHLrsFeSTjLL9jMPjI4ZkVdlw2n3Xn9NbltF3/8Ao8dQfElqw+LIQWqU0oFHYNIP4ttfl5ObMKHaKSvBMyNruZR0El/ZsrcHLkAHRCLj07KRQJ81l5CUTPtQ02P1Eamz/nT4I3 root@localhost

ECDSA SSH ключи

Ключи ECDSA — ещё один популярный вариант. Они обеспечивают безопасность, аналогичную ключам RSA, но имеют меньший размер ключа, что делает их более эффективными для некоторых случаев использования. Рекомендуемый минимальный размер ключа для ECDSA — 256 бит.

Пример публичного ключа ECDSA:

ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCE9Uli8bGnD4hOWdeo5KKQJ/P/vOazI4MgqJK54w37emP2JwOAOdMmXuwpxbKng3KZz27mz+nKWIlXJ3rzSGMo= root@localhost

Ed25519 SSH ключи

Ed25519 — новый, высокозащищенный тип ключа, превосходящий по производительности и безопасности RSA и ECDSA. Ed25519 основан на алгоритме EdDSA и использует 256-битный размер ключа.

Пример публичного ключа Ed25519:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK0wmN/Cr3JXqmLW7u+g9pTh+wyqDHpSQEIQczXkVx9q root@localhost

Варианты использования различных типов SSH ключей

  • Общее назначение: Ключи RSA наиболее широко распространены и поддерживаются, что делает их хорошим выбором по умолчанию для большинства сценариев использования.
  • Встраиваемые системы и IoT: Ключи ECDSA и Ed25519 более эффективны и имеют меньший размер ключа, что делает их более подходящими для устройств с ограниченными ресурсами.
  • Среды с высоким уровнем безопасности: Ключи Ed25519 считаются самыми надёжными и рекомендуются для приложений с высоким уровнем безопасности, таких как критическая инфраструктура или конфиденциальные данные.
  • Совместимость с устаревшими технологиями: Если необходимо подключиться к старым системам, не поддерживающим новые типы ключей, ключи RSA могут быть единственным вариантом.

Управление SSH ключами

Генерация SSH ключей

Ключи можно генерировать с помощью команды ssh-keygen. Например, чтобы создать ключ Ed25519:

ssh-keygen -t ed25519 -C "ваш_email@example.ru"

В каталоге ~/.ssh будут сгенерированы для файла ключа с использованием алгоритма ECDSA: id_ecdsa — приватный ключ и id_ed25519.pub — публичный ключ.

Имана файлов ключей, по умолчанию:

  • id_rsa.pub — публичный ключ RSA
  • id_rsa — приватный ключ RSA
  • id_dsa.pub — публичный ключ DSA
  • id_dsa — приватный ключ DSA
  • id_ecdsa.pub — публичный ключ ECDSA
  • id_ecdsa — приватный ключ ECDSA
  • id_ed25519.pub — публичный ключ Ed25519
  • id_ed25519 — приватный ключ Ed25519

Передача публичных SSH ключей

После генерации ключа необходимо передать публичный ключ серверам или сервисам, к которым необходимо получить доступ. Обычно это делается путём копирования содержимого публичного ключа и вставки его в файл ~/.ssh/authorized_keys на удалённой системе. Или через программу ssh-copy-id входящую в пакет OpenSSH:

ssh-copy-id username@remote_host

Если ssh-copy-id недоступен или не работает можно сделать следующее. На удалённом сервере создайте каталог ~/.ssh, файл ~/.ssh/authorized_keys и установить права доступа:

mkdir ~/.ssh
chmod 0700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 0644 ~/.ssh/authorized_keys

Затем скопируйте публичный ключ с локального хоста на удалённый (в примере передаётся публичный ключ RSA, имена файлов по умолчанию для других типов ключей указаны выше):

cat ~/.ssh/id_rsa.pub | ssh username@remote_host "cat >> ~/.ssh/authorized_keys"

Если у вас Windows используйте следующую команду PowerShell:

type $env:USERPROFILE\.ssh\id_rsa.pub | ssh username@remote_host "cat >> ~/.ssh/authorized_keys"

Проверьте подключение и авторизацию на удалённом сервере по SSH ключу.

Защита приватных SSH ключей

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

В чем разница между SSH ключами RSA и ED25519?

Разница между SSH ключами RSA и ED25519 заключается в следующих особенностях:

RSA — самый старый и распространённый алгоритм, основанный на использовании парных ключей (приватного и публичного). 

Ключи RSA используют алгоритм RSA для шифрования и считаются безопасными, рекомендуемый минимальный размер ключа — 2048 бит. 

ED25519 — новый, высокозащищённый тип ключа, превосходящий по производительности и безопасности RSA и ECDSA. 

ED25519 основан на алгоритме EdDSA и использует 256-битный размер ключа. 

Некоторые преимущества ключей ED25519:

  • Безопасность.  ED25519 обеспечивает высокий уровень безопасности при меньшем размере ключа. 
  • Производительность. ED25519 быстрее RSA в отношении генерации ключа и проверки подписи. 
  • Размер ключа. Ключи ED25519 короче ключей RSA: публичный ключ ED25519 содержит всего 68 символов, в отличие от RSA (3072 символа). 

Выбор между RSA и ED25519 зависит от конкретных требований к безопасности, производительности и совместимости SSH-соединений. 

Заключение

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

Помните, что с SSH ключами всегда нужно обращаться осторожно и беречь свои приватные ключи.