Как ключи попадают в папку .ssh

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

Ответ

Ключи SSH попадают в папку ~/.ssh/ двумя основными способами: ручной генерацией или автоматическим созданием при первом подключении.

1. Ручная генерация и размещение (наиболее частый сценарий в DevOps):

  • Генерация новой пары ключей: Использую ssh-keygen для создания криптографической пары (приватный и публичный ключ).

    ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_ed25519_github -C "work-laptop"
    # или для совместимости со старыми системами:
    ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_aws

    Эта команда создаст два файла в ~/.ssh/:

    • id_ed25519_github — приватный ключ (никогда никому не передается).
    • id_ed25519_github.pub — публичный ключ (копируется на удаленные серверы, в GitHub, GitLab и т.д.).
  • Копирование существующего ключа: При миграции или настройке новой машины я могу скопировать существующие ключи из бэкапа или с другой системы (например, через scp или флешку) напрямую в ~/.ssh/.

2. Автоматическое создание файлов:

  • При первом успешном SSH-подключении к удаленному хосту, клиент SSH автоматически создаст (если отсутствует) файл ~/.ssh/known_hosts и добавит в него отпечаток (fingerprint) удаленного сервера для верификации в будущем.

Критически важный шаг — настройка прав доступа:

# Папка .ssh должна быть доступна только владельцу
chmod 700 ~/.ssh
# Приватные ключи должны быть доступны только на чтение владельцу
chmod 600 ~/.ssh/id_*
# Публичные ключи могут быть доступны на чтение всем (обычно 644)
chmod 644 ~/.ssh/*.pub
# Файл known_hosts также обычно имеет права 644
chmod 644 ~/.ssh/known_hosts

Без корректных прав SSH-клиент откажется использовать ключи из соображений безопасности.