Определение простыми словами
Файл known_hosts — это специальный файл на клиентском компьютере, в котором хранятся публичные ключи удалённых SSH-серверов. Когда вы подключаетесь к серверу через SSH, система проверяет этот файл, чтобы убедиться, что сервер — тот, кому вы доверяете. Это помогает предотвратить атаки посредника (man-in-the-middle), когда злоумышленник пытается выдать себя за сервер и перехватить данные.
Если ключ сервера отсутствует в файле, SSH-клиент предупреждает пользователя и предлагает подтвердить новый ключ. Таким образом known_hosts служит первой защитной линией в установлении безопасного соединения по SSH.
Сравнение
| Особенность | known_hosts | authorized_keys |
|---|---|---|
| Расположение | Клиент | Сервер |
| Назначение | Хранит публичные ключи серверов для проверки | Хранит публичные ключи клиентов для доступа |
| Контекст использования | Проверка подлинности сервера | Авторизация клиента |
| Обновление | Автоматически или вручную при первом подключении | Вручную администратором сервера |
Кейсы использования
- Автоматическое подтверждение подлинности часто посещаемых серверов.
- Управление безопасностью при массовом администрировании серверов.
- Скрипты и автоматизация для обновления файла
known_hostsв крупных инфраструктурах. - Обеспечение безопасности SSH-подключений в корпоративных сетях.
- Отслеживание и предупреждение при смене ключа сервера (возможное свидетельство атаки).
Негативный пример: Игнорирование предупреждений SSH о несовпадении ключа сервера и автоматическое игнорирование изменений — ведёт к повышенному риску взлома через атаки man-in-the-middle.
Технические детали
Формат файла known_hosts — текстовый, каждая строка соответствует одному известному серверу и содержит:
- Хост (имя или IP-адрес, иногда с хэшированием)
- Тип ключа (например, ssh-rsa, ecdsa-sha2-nistp256)
- Публичный ключ сервера в base64
Пример записи:
github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA7w4q9...
Для управления содержимым используют команды SSH-клиента, например, удаление записи:
ssh-keygen -R github.com
Путь к файлу по умолчанию: ~/.ssh/known_hosts.
Подробнее на страницах: SSH, authorized_keys, ssh-keygen.
🔥 Где это применяется
Частые вопросы
Что происходит, если ключ сервера изменился?
SSH клиент выдаст предупреждение о несоответствии ключа, чтобы предотвратить возможную атаку man-in-the-middle.
Можно ли вручную редактировать файл known_hosts?
Да, но для удобства и безопасности рекомендуется использовать команды ssh-keygen.
Что значит хэширование в known_hosts?
Хэширование скрывает реальные имена хостов, повышая конфиденциальность при хранении в файле.