Другое

Исправление предупреждения о ключе 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 с SSSD управление ключами хостов SSH работает иначе, чем в стандартных настройках SSH. Вместо того чтобы полагаться на отдельные файлы ~/.ssh/known_hosts пользователей, FreeIPA централизованно хранит ключи хостов в /var/lib/sss/pubconf/known_hosts. Это управляется через SSSD, который автоматически заполняет этот файл ключами хостов из каталога FreeIPA.

Конфигурация обычно включает:

  • GlobalKnownHostsFile /var/lib/sss/pubconf/known_hosts
  • KnownHostsCommand /usr/bin/sss_ssh_knownhosts %H

Этот централизованный подход обеспечивает несколько преимуществ:

  • Единая проверка ключей хостов для всех пользователей
  • Автоматическое распространение обновленных ключей хостов
  • Интеграция с аутентификацией на основе сертификатов

Однако при переустановке сервера новый ключ хоста автоматически не синхронизируется с каталогом FreeIPA, что приводит к сбою проверки.


Правильное решение: Использование инструментов FreeIPA для обновления ключей хостов

Шаг 1: Удаление старой записи хоста из FreeIPA

Сначала необходимо удалить старый ключ хоста из каталога FreeIPA. Используйте команду ipa host-del:

bash
sudo ipa host-del <hostname>.<domain>

Замените <hostname>.<domain> на фактическое полное доменное имя хоста (например, pong.example.com).

Шаг 2: Повторная регистрация хоста в FreeIPA

После удаления старой записи хоста повторно зарегистрируйте сервер в FreeIPA:

bash
sudo ipa-client-install --uninstall
sudo ipa-client-install

Параметр --uninstall гарантирует полное удаление предыдущей конфигурации клиента перед повторной регистрацией.

Шаг 3: Перезапуск SSSD для обновления файла известных хостов

SSSD необходимо перезапустить, чтобы он принял новый ключ хоста:

bash
sudo systemctl restart sssd

Шаг 4: Проверка исправления

Проверьте подключение SSH к серверу:

bash
ssh <hostname>

Предупреждение теперь должно быть устранено, а новый ключ хоста будет автоматически сохранен в /var/lib/sss/pubconf/known_hosts.


Альтернативные подходы

Ручное обновление ключа хоста

Если вышеуказанный метод не работает, вы можете вручную обновить ключ хоста:

  1. Получите новый отпечаток ключа хоста с переустановленного сервера:
bash
ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
  1. Обновите запись хоста в FreeIPA новым ключом:
bash
sudo ipa host-mod <hostname> --sshpubkey="$(cat /etc/ssh/ssh_host_rsa_key.pub)"
  1. Очистите кэш SSSD:
bash
sudo sss_cache -E
sudo systemctl restart sssd

Временное отключение строгой проверки ключа хоста

Для немедленного доступа (не рекомендуется для производственных сред):

bash
ssh -o StrictHostKeyChecking=no <hostname>

Это примет новый ключ без проверки. После этого вы должны применить правильное исправление.


Профилактические меры

1. Резервное копирование ключей хостов перед переустановкой

Перед переустановкой сервера создайте резервную копию SSH ключей хостов:

bash
sudo cp /etc/ssh/ssh_host_*_key* /backup/location/

После переустановки восстановите их:

bash
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. Регулярная ротация ключей

Реализуйте регулярную ротацию ключей хостов как практику безопасности:

bash
sudo ipa host-mod <hostname> --sshpubkey="$(cat /etc/ssh/ssh_host_rsa_key.pub)"

Шаги по устранению неполадок

Проверка статуса SSSD

Убедитесь, что SSSD работает правильно:

bash
sudo systemctl status sssd
sudo sssctl domain-status

Отладка интеграции SSH с SSSD

Включите журналирование отладки для SSSD SSH:

bash
sudo sed -i 's/LogLevel INFO/LogLevel DEBUG/' /etc/sssd/sssd.conf
sudo systemctl restart sssd
ssh -vvv <hostname>

Ручная инъекция ключа

Если автоматические методы не работают, вручную вставьте новый ключ:

bash
sudo echo "$(ssh-keyscan -H <hostname>)" >> /var/lib/sss/pubconf/known_hosts
sudo chmod 644 /var/lib/sss/pubconf/known_hosts

Проверка распространения ключа

Убедитесь, что новый ключ правильно распространен:

bash
sudo cat /var/lib/sss/pubconf/known_hosts | grep <hostname>

В выводе должен отображаться новый отпечаток ключа хоста, соответствующий тому, который вы видели в сообщении предупреждения.


Источники

  1. FreeIPA на Devuan и sss ssh knownhosts proxy
  2. Как исправить “host key verification failed” в SSH
  3. Понимание SSH ключей хостов и проверки ключа хоста
  4. Как исправить ошибку SSH “Warning: Remote host identification has changed”
  5. Исправление сообщения “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.

Авторы
Проверено модерацией
Модерация