Ответ
В DevOps SSH-ключи — основной способ безопасного доступа к серверам и автоматизации. Я различаю типы ключей (алгоритмы) и форматы их хранения.
Типы ключей (алгоритмы):
- Ed25519 — мой современный выбор по умолчанию. Алгоритм на эллиптических кривых, который обеспечивает высокий уровень безопасности (эквивалентен ~3000-битному RSA) при меньшем размере ключа и высокой скорости операций.
ssh-keygen -t ed25519 -C "deploy-key-for-prod" -f ~/.ssh/id_ed25519_deploy - RSA — классический, широко поддерживаемый алгоритм. Если использую RSA, то только с длиной ключа не менее 3072 бита (4096 для долгосрочных ключей).
ssh-keygen -t rsa -b 4096 - ECDSA — также алгоритм на эллиптических кривых. Хорошая альтернатива, но Ed25519 обычно предпочтительнее.
- DSA — устаревший и небезопасный. Никогда не использую.
Форматы хранения:
- OpenSSH format (новый) — начинается с
-----BEGIN OPENSSH PRIVATE KEY-----. Это формат по умолчанию дляssh-keygenв современных системах. Он компактнее и хранит все данные (ключ, комментарий) в одной структуре. - PEM format (старый) — начинается с
-----BEGIN RSA PRIVATE KEY-----. Часто встречается в старых системах или при интеграции с другими инструментами (например, для конвертации в формат, понятный некоторым облачным провайдерам).
Практика: Для всех новых развертываний и CI/CD пайплайнов я генерирую ключи Ed25519. Для совместимости со старыми системами (например, некоторыми сетевыми устройствами) могу использовать RSA 4096. Все приватные ключи защищены парольной фразой, а в инфраструктуре используются deploy-ключи с ограниченными правами.