Сообщение «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 записывает хост именно так, как вы к нему подключались: по доменному имени, по IP-адресу и, при нестандартном порте, с указанием порта в квадратных скобках. Попробуйте удалить запись по каждому варианту:
ssh-keygen -R example.com
ssh-keygen -R 192.0.2.10
ssh-keygen -R "[example.com]:2222"
Учтите, что записи могут находиться не только в пользовательском файле ~/.ssh/known_hosts, но и в системном — его расположение зависит от ОС и конфигурации. Точный путь к системному файлу стоит уточнить в документации вашей версии OpenSSH, так как он различается между дистрибутивами и сборками.
☑️ Проверка перед удалением записи о хосте
⚠️ Внимание: не удаляйте файл 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 путь_к_ключу и повторите операцию, которая выдавала ошибку. Если агент не запущен, сначала запустите его способом, предусмотренным вашей ОС.