Ответ
В своей работе с инфраструктурой я постоянно генерирую SSH-ключи для доступа к серверам, Git-репозиториям и автоматизации. Вот мой стандартный подход:
Базовая генерация (рекомендую Ed25519):
ssh-keygen -t ed25519 -C "devops-team@company.com" -f ~/.ssh/id_ed25519_github
Для legacy-систем, требующих RSA:
ssh-keygen -t rsa -b 4096 -C "jenkins@production" -f ~/.ssh/id_rsa_jenkins
Что происходит и почему так делаю:
- Алгоритм:
Ed25519— современный, безопасный и быстрый.RSA 4096— для совместимости со старыми системами. - Комментарий (
-C): Добавляю email или идентификатор, чтобы позже было понятно, для чего ключ. - Имя файла (
-f): Явно указываю путь, особенно при создании ключей для разных целей (личный, рабочий, CI/CD). - Passphrase: Всегда устанавливаю сложную passphrase, а для автоматизации использую ssh-agent:
# Добавление ключа в агент
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519_github
# Проверка, что ключ добавлен
ssh-add -l
Практические примеры из workflow:
# Для Ansible
ssh-keygen -t ed25519 -f ~/.ssh/ansible_prod -N "" # Без passphrase для автоматизации
# Для доступа к GitLab CI
ssh-keygen -t ed25519 -C "gitlab-ci-$CI_PROJECT_ID"
# Просмотр публичного ключа для копирования
cat ~/.ssh/id_ed25519_github.pub
# ssh-ed25519 AAAAC3... devops-team@company.com
Важные моменты безопасности:
- Права на
~/.sshдолжны быть700, на приватные ключи —600. - Никогда не коммичу приватные ключи в репозитории.
- В инфраструктуре использую разные ключи для разных окружений (dev/stage/prod).