Где хранятся SSH-ключи в Linux — и как управлять ими безопасно
Общие файлы в этом каталоге:
SSH (Secure Shell) является основным инструментом в экосистеме Linux, используемым для удаленного доступа, безопасной передачи файлов, автоматизации и управления серверами. Хотя большинство пользователей взаимодействуют с SSH через команду ssh, на самом деле SSH полагается на пары публичных и приватных ключей для аутентификации — особенно в средах, где безпарольный вход, автоматизация и практики DevOps являются необходимыми.
Место хранения ключей SSH по умолчанию
Самое распространенное место хранения ключей SSH:
~/.ssh/
Это относится к каталогу .ssh в домашней папке пользователя, например:
/home/username/.ssh/
Общие файлы в этом каталоге:
| Файл | Назначение |
|---|---|
| id_rsa | Ключ приватный по умолчанию (RSA) |
| id_rsa.pub | Соответствующий публичный ключ |
| id_ecdsa, id_ed25519 | Другие приватные ключи (ECDSA, Ed25519) |
| id_*.pub | Соответствующие публичные ключи |
| authorized_keys | Хранит публичные ключи разрешенные для подключения |
| known_hosts | Хранит отпечатки серверов (проверка ключа хоста) |
| config | Конфигурация клиента SSH для конкретного пользователя |
Если вы генерируете ключи с помощью ssh-keygen, они по умолчанию хранятся здесь, если не указан путь.
Системные места хранения ключей SSH
Ключи хоста SSH (sshd)
Системные ключи, используемые демоном SSH (серверная сторона):
/etc/ssh/
Типичные файлы:
| Файл | Назначение |
|---|---|
| ssh_host_rsa_key | Приватный ключ хоста (RSA) |
| ssh_host_rsa_key.pub | Публичный ключ хоста |
| ssh_host_ecdsa_key | Приватный ключ хоста ECDSA |
| ssh_host_ed25519_key | Приватный ключ хоста Ed25519 |
Демон SSH (sshd) представляет публичный ключ хоста во время подключения; клиенты сравнивают его с ~/.ssh/known_hosts.
Пользовательские места хранения ключей
Вы можете генерировать или использовать ключи SSH из любого места, но вы должны указать путь:
ssh -i /path/to/custom_key user@host
Вы также можете настроить несколько ключей через ~/.ssh/config:
Host myserver HostName 192.168.1.100 User devops IdentityFile ~/.ssh/devops_key
Где используются ключи?
Исходящие (Клиентская сторона)
Клиенты SSH по умолчанию ищут приватные ключи в ~/.ssh/. Они используются для инициации аутентификации при подключении к удаленному серверу.
- ssh, scp, rsync через SSH, git (при использовании удаленного SSH)
Входящие (Серверная сторона)
Сервер ищет публичные ключи в:
~/.ssh/authorized_keys
Этот файл перечисляет, какие публичные ключи разрешены для входа в конкретную учетную запись пользователя.
Если user_a пытается подключиться к серверу как user_b, их публичный ключ должен присутствовать в ~user_b/.ssh/authorized_keys.
Разрешения — критически важны для безопасности
Правильные разрешения:
~/.ssh → 700 (drwx------) ~/.ssh/authorized_keys → 600 (-rw-------) ~/.ssh/id_rsa → 600 (-rw-------) ~/.ssh/id_rsa.pub → 644 (-rw-r--r--)
Неправильные разрешения могут привести к тому, что SSH игнорирует ваши ключи или полностью отклоняет входы.
Безопасное управление ключами SSH
- Используйте парольную фразу при генерации приватных ключей:
ssh-keygen -t ed25519 -C "your_email@example.com" - Используйте ssh-agent для кэширования разблокированных ключей в памяти:
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa - Регулярно меняйте ключи
- Удаляйте неиспользуемые или сиротские ключи из “authorized_keys”
- Используйте отдельные ключи для каждого хоста/проекта
- Избегайте использования корневых ключей в разных средах
Аудит и отладка
Чтобы увидеть, какой ключ используется во время подключения SSH:
ssh -v user@host
Это выводит подробные логи, включая информацию о том, какой файл идентификации был использован.
Чтобы перечислить загруженные ключи в вашем текущем агенте:
ssh-add -l
Чтобы удалить ключ:
ssh-add -d ~/.ssh/mykey
Заключение
Понимание того, где хранятся ключи SSH в Linux — и как управлять ими безопасно — имеет решающее значение для системных администраторов, разработчиков, инженеров DevOps и всех, кто работает в средах с несколькими хостами или пользователями.
Зная разницу между пользовательскими ключами, ключами хоста и авторизованными ключами, вы можете:
- Устранять проблемы с аутентификацией
- Настраивать безопасные автоматизированные рабочие процессы
- Управлять доступом между командами и системами
На производственных системах или облачных платформах (например, VPS или выделенных серверах) неправильное управление ключами SSH может привести к серьезным уязвимостям. Убедитесь, что вы следуете лучшим практикам и регулярно проводите аудит доступа.
