<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[SSH &#x27;remote host identification has changed&#x27; — как решить]]></title><description><![CDATA[<p dir="auto">Если при подключении к серверу по SSH вдруг появляется ошибка про изменение идентификации хоста, это не конец света, но игнорировать её нельзя. Ошибка возникает неожиданно и может заблокировать доступ к важным системам. Разберёмся, почему это происходит и как быстро вернуть всё в норму.</p>
<p dir="auto">Эта проблема встречается часто, особенно при обновлении серверов, смене IP-адресов или ротации ключей безопасности. Знание способов её решения поможет вам не потерять время в критические моменты.</p>
<h2>Почему SSH ругается на изменение хоста</h2>
<p dir="auto">Когда вы впервые подключаетесь к серверу по SSH, клиент запрашивает у сервера его публичный ключ для проверки подлинности. Этот процесс называется <strong>аутентификацией хоста</strong> — сервер доказывает, что он именно тот, на кого выдаёт себя. Если вы согласны с подключением, публичный ключ сохраняется в локальном файле <code>~/.ssh/known_hosts</code> на вашем компьютере.</p>
<p dir="auto">В следующий раз, когда вы пытаетесь подключиться к этому же серверу, SSH сравнивает полученный ключ с сохранённым. Если они совпадают — всё хорошо, подключение проходит без вопросов. Но если ключ отличается, SSH выдаёт предупреждение и блокирует доступ. Это сделано для защиты: вдруг кто-то пытается выдать себя за ваш сервер?</p>
<p dir="auto">Вот почему изменение хоста может быть <strong>легитимным</strong>: администратор обновил SSH-ключи, сервер перезагрузился с новыми параметрами, изменился IP-адрес или переустановилась операционная система. Но это может быть и попыткой атаки, поэтому SSH не берёт на себя смелость подключаться автоматически.</p>
<h2>Как выглядит ошибка и что она значит</h2>
<p dir="auto">Ошибка обычно выглядит примерно так:</p>
<pre><code>@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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
SHA256:bWaEpc+YCgTvppCmDyIbnFTCnjhsGCQOsGGGHjMFqes.
Please contact your system administrator.
Add correct host key in /Users/you/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/you/.ssh/known_hosts:10
RSA host key for rita.server.com has changed and you have requested strict checking.
Host key verification failed.
</code></pre>
<p dir="auto">Разберём, что здесь важно:</p>
<ul>
<li><strong>WARNING</strong> — это действительно предупреждение, но не обязательно угроза</li>
<li><strong>The fingerprint for the RSA key</strong> — отпечаток нового ключа, который прислал сервер</li>
<li><strong>Offending RSA key in ~/.ssh/known_hosts:10</strong> — строка номер 10 в вашем файле known_hosts содержит старый ключ</li>
<li><strong>strict checking</strong> означает, что SSH настроен на жёсткую проверку</li>
</ul>
<p dir="auto">Этот вывод содержит все данные, которые вам понадобятся для решения проблемы.</p>
<h2>Самый быстрый способ: удалить старый ключ из known_hosts</h2>
<p dir="auto">Самое популярное решение — это удалить старую запись о хосте из файла <code>known_hosts</code>. Когда вы подключитесь заново, SSH запросит согласие и сохранит новый ключ. Это займёт буквально несколько секунд.</p>
<p dir="auto">Чтобы удалить запись по имени хоста или IP-адресу, используйте команду:</p>
<pre><code class="language-bash">ssh-keygen -R hostname_or_ip -f ~/.ssh/known_hosts
</code></pre>
<p dir="auto">Замените <code>hostname_or_ip</code> на имя или адрес вашего сервера. Например:</p>
<pre><code class="language-bash">ssh-keygen -R example.com -f ~/.ssh/known_hosts
ssh-keygen -R 192.168.1.100 -f ~/.ssh/known_hosts
</code></pre>
<p dir="auto">Если вы хотите просто удалить весь файл known_hosts (это опасно, если вы часто подключаетесь ко множеству серверов, но может помочь при массовом обновлении ключей), выполните:</p>
<pre><code class="language-bash">rm ~/.ssh/known_hosts
</code></pre>
<p dir="auto">Об этом более подробно:</p>
<ul>
<li><strong>Преимущество:</strong> быстро и просто, одна команда</li>
<li><strong>Недостаток:</strong> если у вас много серверов, придётся принимать ключи для каждого при следующем подключении</li>
<li><strong>Безопасность:</strong> убедитесь, что обновление ключей действительно легитимно, прежде чем удалять записи</li>
</ul>
<h2>Ручное редактирование файла known_hosts</h2>
<p dir="auto">Если вы предпочитаете более контролируемый подход, можно отредактировать файл вручную. Это особенно полезно, если у вас много хостов и вы не хотите удалять всё сразу.</p>
<p dir="auto">Файл <code>~/.ssh/known_hosts</code> содержит по одной записи на каждый хост. Каждая строка состоит из имени хоста, типа ключа и самого ключа. Вы можете открыть файл в любом текстовом редакторе:</p>
<pre><code class="language-bash">nano ~/.ssh/known_hosts
</code></pre>
<p dir="auto">Или:</p>
<pre><code class="language-bash">vi ~/.ssh/known_hosts
</code></pre>
<p dir="auto">Поиск нужной строки может быть затруднён, если ключ длинный. Но ошибка SSH подскажет вам номер строки — посмотрите на строку “Offending RSA key in /Users/you/.ssh/known_hosts:10”. Это значит, что проблемный ключ на строке 10. Просто удалите эту строку и сохраните файл.</p>
<p dir="auto">Рекомендации по ручному редактированию:</p>
<ul>
<li><strong>Сделайте резервную копию</strong> перед редактированием: <code>cp ~/.ssh/known_hosts ~/.ssh/known_hosts.old</code></li>
<li><strong>Найдите строку по номеру</strong> — сообщение об ошибке вам это подскажет</li>
<li><strong>Удалите только нужную строку</strong> — не трогайте остальные записи</li>
<li><strong>Сохраните и закройте</strong> редактор</li>
</ul>
<h2>Что делать на Windows с PuTTY</h2>
<p dir="auto">Если вы используете Windows и клиент PuTTY, процесс немного другой. PuTTY хранит ключи не в текстовом файле, а в реестре Windows.</p>
<p dir="auto">Вот как удалить старый ключ в PuTTY:</p>
<ul>
<li>Откройте <strong>Registry Editor</strong> (введите <code>regedit</code> в поиск Windows)</li>
<li>Перейдите по пути: <code>HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\SshHostKeys</code></li>
<li>Найдите запись, соответствующую вашему серверу (например, <code>rsa2@22:example.com</code>)</li>
<li><strong>Щёлкните правой кнопкой</strong> и выберите <strong>Delete</strong></li>
<li>Закройте Registry Editor</li>
</ul>
<p dir="auto">При следующем подключении PuTTY спросит согласие на новый ключ — просто согласитесь.</p>
<p dir="auto">Особенности PuTTY:</p>
<ul>
<li>Ключи хранятся в реестре, а не в файлах</li>
<li>Процесс немного более сложный, чем на Linux/Mac</li>
<li>После удаления нужно заново принять ключ при подключении</li>
</ul>
<h2>Проверка отпечатка ключа перед принятием</h2>
<p dir="auto">Им важный момент — <strong>перед тем как согласиться с новым ключом, убедитесь, что это действительно ваш сервер</strong>. Отпечаток (fingerprint) ключа — это уникальный идентификатор, который намного короче самого ключа и удобнее для сравнения.</p>
<p dir="auto">Если администратор сервера опубликовал новый отпечаток, например в письме или в документации, сравните его с тем, что выдаёт вам SSH:</p>
<pre><code>The fingerprint for the RSA key sent by the remote host is
SHA256:bWaEpc+YCgTvppCmDyIbnFTCnjhsGCQOsGGGHjMFqes.
</code></pre>
<p dir="auto">Если совпадает — можете смело согласиться. Если отпечаток неизвестен или не совпадает, свяжитесь с администратором перед тем как продолжать.</p>
<p dir="auto">Проверка отпечатка — это <strong>критически важный шаг безопасности</strong>:</p>
<ul>
<li>Убедитесь, что администратор действительно обновил ключи</li>
<li>Получите отпечаток из надёжного источника (официальное письмо, чат, прямая беседа)</li>
<li>Сравните его перед принятием нового ключа</li>
<li>Никогда не игнорируйте предупреждение об изменении хоста без проверки</li>
</ul>
<h2>Как уведомить клиентов об изменении ключей</h2>
<p dir="auto">Если вы администратор сервера и только что обновили SSH-ключи, вам нужно уведомить всех пользователей. Иначе они столкнутся с этой ошибкой и не смогут подключиться.</p>
<p dir="auto">Напишите письмо или объявление с информацией:</p>
<ul>
<li><strong>Когда</strong> произойдёт обновление (или когда оно уже произошло)</li>
<li><strong>Почему</strong> вы обновляете ключи (плановое обслуживание, смена IP, ротация для безопасности)</li>
<li><strong>Что</strong> нужно сделать пользователям: удалить старый ключ из known_hosts</li>
<li><strong>Отпечаток нового ключа</strong> для проверки</li>
<li><strong>Команду</strong>, которую нужно выполнить</li>
</ul>
<p dir="auto">Пример письма:</p>
<pre><code>Обновление SSH-ключей на сервере example.com

Внимание: 18 февраля мы обновили SSH-ключи на нашем сервере.
Если при подключении вы видите ошибку "remote host identification has changed",
выполните команду:

ssh-keygen -R example.com -f ~/.ssh/known_hosts

Это удалит старый ключ из вашего файла known_hosts.
При следующем подключении примите новый ключ.

Отпечаток нового RSA-ключа (для проверки):
SHA256:bWaEpc+YCgTvppCmDyIbnFTCnjhsGCQOsGGGHjMFqes

Если у вас возникли проблемы, свяжитесь с поддержкой.
</code></pre>
<p dir="auto">Шаги для администратора:</p>
<ul>
<li>Уведомите пользователей <strong>до</strong> или <strong>сразу после</strong> обновления</li>
<li>Предоставьте точный отпечаток нового ключа</li>
<li>Дайте готовую команду для удаления старого ключа</li>
<li>Будьте готовы ответить на вопросы в первые часы</li>
</ul>
<h2>Продвинутые решения: SSHFP-записи и автоматизация</h2>
<p dir="auto">Для больших сетей с множеством серверов существуют более автоматизированные подходы. Один из них — использование <strong>SSHFP DNS-записей</strong>.</p>
<p dir="auto">SSHFP (SSH Public Key Fingerprint) — это запись в DNS, которая содержит отпечаток SSH-ключа вашего сервера. Клиент может автоматически проверить отпечаток по DNS вместо того, чтобы хранить его локально. Это особенно полезно при частых обновлениях ключей или в облачной инфраструктуре, где серверы часто пересоздаются.</p>
<p dir="auto">Добавить SSHFP-запись можно через панель управления вашим DNS-хостером. После этого клиенты смогут конфигурировать SSH для автоматической проверки по DNS.</p>
<p dir="auto">Для очень больших инфраструктур используют:**</p>
<ul>
<li><strong>Централизованное управление ключами</strong> — хранение всех публичных ключей в одном месте</li>
<li><strong>Автоматическое распределение</strong> — скрипты, которые обновляют known_hosts на всех машинах</li>
<li><strong>Конфигурационный менеджмент</strong> — Ansible, Puppet или Chef для управления SSH-ключами</li>
</ul>
<p dir="auto">Эти решения требуют больше времени на настройку, но окупаются в крупных организациях с сотнями или тысячами серверов.</p>
<h2>Когда быть осторожнее всего</h2>
<p dir="auto">Не все случаи изменения хоста безопасны. Если ошибка возникает на <strong>удалённом сервере в интернете</strong>, а вы не ожидали обновления ключей, стоит быть осторожнее.</p>
<p dir="auto">Когда нужна повышенная бдительность:</p>
<ul>
<li>Вы подключаетесь к серверу в облаке или на виртуальном хосте, где вы не администратор</li>
<li>Никто вас не предупреждал об обновлении ключей</li>
<li>Это критический сервер с важными данными</li>
<li>Вы подключаетесь с открытой сети (например, через мобильный интернет)</li>
</ul>
<p dir="auto">В таких случаях:</p>
<ul>
<li><strong>Свяжитесь с администратором</strong> и спросите, действительно ли ключи обновлялись</li>
<li><strong>Получите отпечаток</strong> из независимого источника</li>
<li><strong>Проверьте другие способы доступа</strong> (веб-панель, консоль в облаке)</li>
<li><strong>Только после этого</strong> удаляйте старый ключ</li>
</ul>
<p dir="auto">Для локальных серверов в защищённой сети можно быть менее строгим, но принцип остаётся: <strong>всегда проверяйте, что вы подключаетесь именно к своему серверу</strong>.</p>
<h2>Что остаётся за кадром</h2>
<p dir="auto">Саmo явление изменения хоста — это баланс между удобством и безопасностью. SSH выбирает безопасность, что правильно для критичных систем. Но для разработчиков, работающих с десятками серверов, это может быть раздражающим.</p>
<p dir="auto">Ключевое — не просто удалять записи автоматически, а понимать, что вы делаете. Если вы администратор и обновляете ключи, помните о своих пользователях и дайте им все нужные инструменты. Если вы просто подключаетесь к серверу, уделите минуту на проверку отпечатка — это может спасти вас от масштабной проблемы.</p>
]]></description><link>https://forum.exlends.ru/topic/535/ssh-remote-host-identification-has-changed-kak-reshit</link><generator>RSS for Node</generator><lastBuildDate>Wed, 20 May 2026 07:27:43 GMT</lastBuildDate><atom:link href="https://forum.exlends.ru/topic/535.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Feb 2026 07:35:01 GMT</pubDate><ttl>60</ttl></channel></rss>