Как сгенерировать ssh ключ в Linux

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

Ответ

В своей работе с инфраструктурой я постоянно генерирую 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

Что происходит и почему так делаю:

  1. Алгоритм: Ed25519 — современный, безопасный и быстрый. RSA 4096 — для совместимости со старыми системами.
  2. Комментарий (-C): Добавляю email или идентификатор, чтобы позже было понятно, для чего ключ.
  3. Имя файла (-f): Явно указываю путь, особенно при создании ключей для разных целей (личный, рабочий, CI/CD).
  4. 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).