Ошибка «This key is not known by any other names»: что она значит и как её исправить

Сообщение «this key is not known by any other names» появляется при работе с SSH-ключами — чаще всего в момент, когда утилита пытается найти ключ в хранилище по его «имени» (отпечатку, комментарию или хосту) и не находит ни одного совпадения. Пользователь видит эту фразу при загрузке ключа в агент, при попытке удалить запись о хосте из файла known_hosts или при проверке ключа, который на самом деле не зарегистрирован в системе.

Смысл сообщения буквальный: инструмент искал ключ по указанному вами идентификатору и не обнаружил его ни под каким другим именем. Это не повреждение ключа и не сбой системы — как правило, дело в несоответствии между тем, что вы указали, и тем, что реально хранится в файлах конфигурации. Ниже разберём, в каких ситуациях возникает ошибка и как её устранить без риска для существующих ключей.

В каких ситуациях появляется ошибка

Чаще всего сообщение встречается в трёх сценариях. Первый — попытка удалить запись о хосте командой ssh-keygen -R hostname, когда этого хоста нет в файле known_hosts (или он записан там под другим именем — например, по IP-адресу вместо домена). Второй — работа с агентом ключей, когда ключ запрашивается по отпечатку или комментарию, которых агент не знает. Третий — конвертация или импорт ключа сторонними утилитами, которые ищут исходный ключ по имени файла или метке.

Важно понимать: текст ошибки может немного отличаться в зависимости от версии утилиты и операционной системы. Если ваше сообщение сформулировано иначе, но содержит слова о том, что ключ «не известен» или «не найден», — логика диагностики из этой статьи всё равно применима.

  • 🔑 Ключ запрошен по имени хоста, которого нет в known_hosts
  • 🧩 Ключ загружен в агент под другим комментарием или отпечатком
  • 📁 Указан неверный путь к файлу ключа или файла known_hosts
  • 🔄 Ключ был пересоздан, а старые записи о нём остались или, наоборот, удалены

Быстрая диагностика: что проверить в первую очередь

Начните с простого: уточните, какая именно команда или действие вызвали ошибку. Если это удаление записи о хосте, проверьте, существует ли вообще файл known_hosts и есть ли в нём нужная строка. Откройте файл в текстовом редакторе и поищите имя хоста вручную — возможно, оно записано с портом, по IP-адресу или в хешированном виде.

Если файл known_hosts хеширован (строки начинаются с маркера вроде |1|), обычный поиск по имени хоста ничего не найдёт. В этом случае используйте поиск через саму утилиту:

ssh-keygen -F имя_хоста

Команда покажет, есть ли запись об этом хосте в файле. Если вывод пустой — значит, хоста там действительно нет, и ошибка «not known by any other names» полностью объяснима: удалять нечего.

📊 В какой ситуации вы столкнулись с ошибкой?
Удаление записи из known_hosts
Загрузка ключа в SSH-агент
Импорт ключа в стороннюю программу
Другое действие

Устранение ошибки при работе с known_hosts

Если цель — удалить запись о хосте, а утилита отвечает, что ключ неизвестен, проверьте все варианты имени, под которым хост мог быть сохранён. SSH записывает хост именно так, как вы к нему подключались: по доменному имени, по IP-адресу и, при нестандартном порте, с указанием порта в квадратных скобках. Попробуйте удалить запись по каждому варианту:

ssh-keygen -R example.com

ssh-keygen -R 192.0.2.10

ssh-keygen -R "[example.com]:2222"

Учтите, что записи могут находиться не только в пользовательском файле ~/.ssh/known_hosts, но и в системном — его расположение зависит от ОС и конфигурации. Точный путь к системному файлу стоит уточнить в документации вашей версии OpenSSH, так как он различается между дистрибутивами и сборками.

☑️ Проверка перед удалением записи о хосте

Выполнено: 0 / 4
⚠️ Внимание: не удаляйте файл known_hosts целиком, чтобы избавиться от одной записи. Вы потеряете проверенные отпечатки всех серверов, и при следующих подключениях не сможете заметить подмену хоста.

Ошибка при работе с SSH-агентом

Когда сообщение появляется при обращении к агенту ключей (например, при попытке удалить ключ из агента или подписать что-то конкретным ключом), причина обычно в том, что ключ идентифицируется по отпечатку или комментарию, которые не совпадают с загруженными. Сначала посмотрите, какие ключи агент знает прямо сейчас:

ssh-add -l

Сравните отпечатки из вывода с тем, что вы указываете в команде. Если нужного ключа нет — добавьте его командой ssh-add путь_к_ключу и повторите операцию. Если ключ есть, но команда всё равно не находит его, возможная причина — несовпадение формата отпечатка (MD5 против SHA256) между версиями утилит. Уточните, какой формат ожидает ваша программа, и получите отпечаток в нужном виде — современные версии ssh-add позволяют выбрать алгоритм отпечатка через соответствующую опцию.

Проблемы с форматом и расположением файла ключа

Ещё одна группа причин — программа ищет ключ не там, где он лежит, или не распознаёт его формат. Ключи, созданные в формате PuTTY (файлы .ppk), не читаются напрямую утилитами OpenSSH, и наоборот — некоторые приложения не понимают новый формат приватных ключей OpenSSH. В таких случаях сообщение о «неизвестном ключе» может быть следствием того, что программа не смогла разобрать файл и не зарегистрировала ключ вовсе.

Проверьте три вещи: путь к файлу указан полностью и без опечаток; файл действительно содержит ключ (откройте его текстовым редактором — приватный ключ OpenSSH начинается со строки -----BEGIN ... PRIVATE KEY-----); формат ключа совместим с используемой программой. Для конвертации между форматами используйте официальные утилиты — например, PuTTYgen для преобразования между PPK и OpenSSH.

СценарийВероятная причинаЧто проверить
ssh-keygen -R не находит хостЗаписи нет или она под другим именемssh-keygen -F, IP-адрес, порт
Агент не находит ключКлюч не загружен или другой отпечатокssh-add -l, формат отпечатка
Программа не видит файл ключаНеверный путь или форматПуть, заголовок файла, тип формата
Ошибка после пересоздания ключаИщется старый отпечатокАктуальный отпечаток нового ключа

Когда ключ был пересоздан или перемещён

Отдельный частый случай — ключ недавно сгенерировали заново, перенесли на другой компьютер или переименовали файл. Все ссылки на старый ключ (отпечатки в скриптах, записи в конфигурации, метки в агенте) при этом устарели. Программа честно сообщает: ключ, который вы запрашиваете, ей неизвестен.

Порядок действий здесь такой: получите отпечаток актуального ключа через ssh-keygen -lf, сравните его с тем, что фигурирует в ошибочной команде или конфигурации, и обновите устаревшие ссылки. Если ключ переносился с другой машины, убедитесь, что скопированы и приватная, и публичная части, и что на приватный ключ выставлены корректные права доступа — при слишком широких правах OpenSSH отказывается использовать файл, что тоже может выглядеть как «неизвестный ключ».

⚠️ Внимание: не публикуйте и не передавайте содержимое приватного ключа при диагностике. Для сравнения достаточно отпечатка — он безопасен для показа.
Почему known_hosts может быть хешированным

Во многих системах опция HashKnownHosts включена по умолчанию — имена хостов в файле заменяются хешами, чтобы посторонний, получивший доступ к файлу, не узнал список ваших серверов. Из-за этого ручной поиск по имени не работает, и использовать нужно ssh-keygen -F и ssh-keygen -R — они умеют вычислять хеш сами.

Что делать, если ничего не помогло

Если все проверки пройдены, а ошибка сохраняется, действуйте по нарастающей. Сначала перезапустите агент ключей: завершите процесс агента и запустите его заново, затем повторно добавьте ключи. Это устраняет ситуации, когда агент держит устаревшее состояние.

Далее проверьте, не работаете ли вы с несколькими экземплярами агента или несколькими файлами конфигурации одновременно — например, ключ добавлен в один агент, а команда обращается к другому. В Windows, где могут сосуществовать служба OpenSSH Authentication Agent и агенты из сторонних программ, такая путаница встречается особенно часто. Убедитесь, что и добавление, и поиск ключа выполняются в одном окружении.

Наконец, если ошибку выдаёт стороннее приложение (Git-клиент, файловый менеджер, CI-система), загляните в его документацию: у каждой программы свой механизм хранения и именования ключей, и универсального рецепта здесь нет. Сверьтесь с официальной инструкцией конкретной программы — это надёжнее, чем переносить решения из чужих конфигураций.

Частые вопросы

Опасна ли эта ошибка — не скомпрометирован ли мой ключ?

Само по себе сообщение «this key is not known by any other names» не говорит о компрометации. Оно означает лишь, что ключ не найден по указанному идентификатору. Однако если ошибка появилась после подозрительных изменений в системе, имеет смысл проверить целостность файлов ключей и записей known_hosts.

Нужно ли удалять старые записи из known_hosts после смены ключа сервера?

Да, если сервер пересоздал свои ключи (например, после переустановки), старую запись следует удалить через ssh-keygen -R, иначе при подключении вы будете получать предупреждение о несовпадении ключа хоста. Перед удалением убедитесь по независимому каналу, что смена ключа легитимна.

Почему ssh-keygen -R не находит хост, который точно есть в файле?

Возможные причины: файл хеширован, и вы ищете не тем инструментом; хост записан с портом или по IP; запись находится в другом файле known_hosts (системном, а не пользовательском). Используйте ssh-keygen -F для поиска — он корректно работает с хешированными записями.

Можно ли конвертировать ключ PPK в формат OpenSSH?

Да, для этого служит утилита PuTTYgen: откройте в ней PPK-файл и экспортируйте ключ в формате OpenSSH через меню конвертации. Приватный ключ при этом остаётся тем же самым — меняется только формат хранения.

Что делать, если ssh-add -l показывает «The agent has no identities»?

Это значит, что в агент не загружен ни один ключ. Добавьте нужный ключ командой ssh-add путь_к_ключу и повторите операцию, которая выдавала ошибку. Если агент не запущен, сначала запустите его способом, предусмотренным вашей ОС.