Ответ
Ключи 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-клиент откажется использовать ключи из соображений безопасности.