Исправление предупреждения о ключе SSH хоста FreeIPA после переустановки сервера
Решение предупреждения 'ИДЕНТИФИКАЦИЯ УДАЛЕННОГО ХОСТА ИЗМЕНИЛАСЬ' в средах FreeIPA. Узнайте правильные шаги по обновлению ключей SSH хоста после переустановки сервера с помощью инструментов FreeIPA.
Как устранить предупреждение “REMOTE HOST IDENTIFICATION HAS CHANGED” после переустановки сервера с FreeIPA на Fedora 19?
После переустановки моего сервера я получаю следующее предупреждение SSH:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
6e:45:f9:a8:af:38:3d:a1:a5:c7:76:1d:02:f8:77:00.
Please contact your system administrator.
Add correct host key in /home/hostname/.ssh/known_hosts to get rid of this message.
Offending RSA key in /var/lib/sss/pubconf/known_hosts:4
RSA host key for pong has changed and you have requested strict checking.
Host key verification failed.
Мой файл known_hosts находится в /var/lib/sss/pubconf/known_hosts вместо типичного расположения ~/.ssh/known_hosts. Я пытался редактировать этот файл, но он остается неизменным. У меня установлен ipa-client на Fedora 19.
Стандартные решения для этой проблемы не работают при установленном FreeIPA. Как правильно устранить это предупреждение проверки SSH-ключа хоста в среде FreeIPA?
Когда ваш сервер переустанавливается в среде FreeIPA, ключ хоста SSH изменяется, но SSSD по-прежнему ссылается на старый ключ из своей базы данных, что вызывает предупреждение “REMOTE HOST IDENTIFICATION HAS CHANGED”. Поскольку FreeIPA управляет ключами хостов SSH через SSSD и хранит их в /var/lib/sss/pubconf/known_hosts, стандартные решения, такие как ручное редактирование файла known_hosts, не будут работать, так как файл регенерируется SSSD. Необходимо использовать инструменты, специфичные для FreeIPA, для обновления ключа хоста в каталоге.
Содержание
- Понимание управления SSH ключами хостов в FreeIPA
- Правильное решение: Использование инструментов FreeIPA для обновления ключей хостов
- Альтернативные подходы
- Профилактические меры
- Шаги по устранению неполадок
Понимание управления SSH ключами хостов в FreeIPA
В среде FreeIPA с SSSD управление ключами хостов SSH работает иначе, чем в стандартных настройках SSH. Вместо того чтобы полагаться на отдельные файлы ~/.ssh/known_hosts пользователей, FreeIPA централизованно хранит ключи хостов в /var/lib/sss/pubconf/known_hosts. Это управляется через SSSD, который автоматически заполняет этот файл ключами хостов из каталога FreeIPA.
Конфигурация обычно включает:
GlobalKnownHostsFile /var/lib/sss/pubconf/known_hostsKnownHostsCommand /usr/bin/sss_ssh_knownhosts %H
Этот централизованный подход обеспечивает несколько преимуществ:
- Единая проверка ключей хостов для всех пользователей
- Автоматическое распространение обновленных ключей хостов
- Интеграция с аутентификацией на основе сертификатов
Однако при переустановке сервера новый ключ хоста автоматически не синхронизируется с каталогом FreeIPA, что приводит к сбою проверки.
Правильное решение: Использование инструментов FreeIPA для обновления ключей хостов
Шаг 1: Удаление старой записи хоста из FreeIPA
Сначала необходимо удалить старый ключ хоста из каталога FreeIPA. Используйте команду ipa host-del:
sudo ipa host-del <hostname>.<domain>
Замените <hostname>.<domain> на фактическое полное доменное имя хоста (например, pong.example.com).
Шаг 2: Повторная регистрация хоста в FreeIPA
После удаления старой записи хоста повторно зарегистрируйте сервер в FreeIPA:
sudo ipa-client-install --uninstall
sudo ipa-client-install
Параметр --uninstall гарантирует полное удаление предыдущей конфигурации клиента перед повторной регистрацией.
Шаг 3: Перезапуск SSSD для обновления файла известных хостов
SSSD необходимо перезапустить, чтобы он принял новый ключ хоста:
sudo systemctl restart sssd
Шаг 4: Проверка исправления
Проверьте подключение SSH к серверу:
ssh <hostname>
Предупреждение теперь должно быть устранено, а новый ключ хоста будет автоматически сохранен в /var/lib/sss/pubconf/known_hosts.
Альтернативные подходы
Ручное обновление ключа хоста
Если вышеуказанный метод не работает, вы можете вручную обновить ключ хоста:
- Получите новый отпечаток ключа хоста с переустановленного сервера:
ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
- Обновите запись хоста в FreeIPA новым ключом:
sudo ipa host-mod <hostname> --sshpubkey="$(cat /etc/ssh/ssh_host_rsa_key.pub)"
- Очистите кэш SSSD:
sudo sss_cache -E
sudo systemctl restart sssd
Временное отключение строгой проверки ключа хоста
Для немедленного доступа (не рекомендуется для производственных сред):
ssh -o StrictHostKeyChecking=no <hostname>
Это примет новый ключ без проверки. После этого вы должны применить правильное исправление.
Профилактические меры
1. Резервное копирование ключей хостов перед переустановкой
Перед переустановкой сервера создайте резервную копию SSH ключей хостов:
sudo cp /etc/ssh/ssh_host_*_key* /backup/location/
После переустановки восстановите их:
sudo cp /backup/location/ssh_host_*_key* /etc/ssh/
sudo chmod 600 /etc/ssh/ssh_host_*_key
sudo chmod 644 /etc/ssh/ssh_host_*_key.pub
2. Использование управляемых IPA ключей хостов
Настройте ваш SSH сервер для использования управляемых IPA ключей хостов, добавив в /etc/ssh/sshd_config:
HostKey /etc/ssh/ssh_host_rsa_key
HostCertificate /etc/ssh/ssh_host_rsa_key-cert.pub
TrustedUserCAKeys /etc/ssh/ipa_ssh_host_key.pub
3. Регулярная ротация ключей
Реализуйте регулярную ротацию ключей хостов как практику безопасности:
sudo ipa host-mod <hostname> --sshpubkey="$(cat /etc/ssh/ssh_host_rsa_key.pub)"
Шаги по устранению неполадок
Проверка статуса SSSD
Убедитесь, что SSSD работает правильно:
sudo systemctl status sssd
sudo sssctl domain-status
Отладка интеграции SSH с SSSD
Включите журналирование отладки для SSSD SSH:
sudo sed -i 's/LogLevel INFO/LogLevel DEBUG/' /etc/sssd/sssd.conf
sudo systemctl restart sssd
ssh -vvv <hostname>
Ручная инъекция ключа
Если автоматические методы не работают, вручную вставьте новый ключ:
sudo echo "$(ssh-keyscan -H <hostname>)" >> /var/lib/sss/pubconf/known_hosts
sudo chmod 644 /var/lib/sss/pubconf/known_hosts
Проверка распространения ключа
Убедитесь, что новый ключ правильно распространен:
sudo cat /var/lib/sss/pubconf/known_hosts | grep <hostname>
В выводе должен отображаться новый отпечаток ключа хоста, соответствующий тому, который вы видели в сообщении предупреждения.
Источники
- FreeIPA на Devuan и sss ssh knownhosts proxy
- Как исправить “host key verification failed” в SSH
- Понимание SSH ключей хостов и проверки ключа хоста
- Как исправить ошибку SSH “Warning: Remote host identification has changed”
- Исправление сообщения “Warning: Remote Host Identification Has Changed”
Заключение
Устранение предупреждения “REMOTE HOST IDENTIFICATION HAS CHANGED” в среде FreeIPA требует использования инструментов, специфичных для FreeIPA, а не стандартных подходов SSH. Ключевые шаги включают удаление старой записи хоста из каталога FreeIPA и повторную регистрацию сервера для установления нового отношения с ключом хоста.
Практические рекомендации:
- Всегда создавайте резервные копии SSH ключей хостов перед переустановкой сервера
- Используйте
ipa host-del, за которым следуетipa-client-installдля правильного обновления ключей - Перезапускайте SSSD после внесения изменений, чтобы убедиться, что новый ключ распространен
- Рассмотрите возможность реализации регулярной ротации ключей как лучшую практику безопасности
Для будущих переустановок сервера предварительное планирование с правильным управлением ключами предотвратит эти проблемы проверки SSH и обеспечит бесперебойную связь в вашей инфраструктуре FreeIPA.