Понимание различных типов 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
— публичный ключ.
Передача публичных 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 как универсального варианта и рассмотрите ключи ECDSA или Ed25519 для более специфических случаев или сред с высоким уровнем безопасности.
Помните, что с SSH ключами всегда нужно обращаться осторожно и беречь свои приватные ключи.