Какие форматы и типы SSH-ключей ты знаешь?

«Какие форматы и типы SSH-ключей ты знаешь?» — вопрос из категории Безопасность, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В DevOps SSH-ключи — основной способ безопасного доступа к серверам и автоматизации. Я различаю типы ключей (алгоритмы) и форматы их хранения.

Типы ключей (алгоритмы):

  1. Ed25519 — мой современный выбор по умолчанию. Алгоритм на эллиптических кривых, который обеспечивает высокий уровень безопасности (эквивалентен ~3000-битному RSA) при меньшем размере ключа и высокой скорости операций.
    ssh-keygen -t ed25519 -C "deploy-key-for-prod" -f ~/.ssh/id_ed25519_deploy
  2. RSA — классический, широко поддерживаемый алгоритм. Если использую RSA, то только с длиной ключа не менее 3072 бита (4096 для долгосрочных ключей).
    ssh-keygen -t rsa -b 4096
  3. ECDSA — также алгоритм на эллиптических кривых. Хорошая альтернатива, но Ed25519 обычно предпочтительнее.
  4. DSA — устаревший и небезопасный. Никогда не использую.

Форматы хранения:

  • OpenSSH format (новый) — начинается с -----BEGIN OPENSSH PRIVATE KEY-----. Это формат по умолчанию для ssh-keygen в современных системах. Он компактнее и хранит все данные (ключ, комментарий) в одной структуре.
  • PEM format (старый) — начинается с -----BEGIN RSA PRIVATE KEY-----. Часто встречается в старых системах или при интеграции с другими инструментами (например, для конвертации в формат, понятный некоторым облачным провайдерам).

Практика: Для всех новых развертываний и CI/CD пайплайнов я генерирую ключи Ed25519. Для совместимости со старыми системами (например, некоторыми сетевыми устройствами) могу использовать RSA 4096. Все приватные ключи защищены парольной фразой, а в инфраструктуре используются deploy-ключи с ограниченными правами.