Я построил несколько виртуальных машин за последние несколько недель. Проблема в том, что .ssh/known_hosts
дает мнеЧеловек посерединепредупреждение. Это происходит, потому что с IP виртуальной машины связан другой отпечаток пальца.
Однако в .ssh/known_hosts
файле я не нахожу записи, связанной с IP, только две странные строки, похожие на ключи, и «ssh-rsa».
Есть ли у кого-нибудь идеи, как удалить старый ключ known_hosts
?
решение1
sed -i '6d' ~/.ssh/known_hosts
Изменим файл ~/.ssh/known_hosts:6, удалив 6-ю строку.
По моему мнению, использование ssh-keygen -R
OpenSH является лучшим решением для опытных пользователей, в то время как обычному администратору Linux лучше поддерживать свои навыки работы с sed на должном уровне, используя описанный выше метод.
решение2
-R
Для этого есть переключатель ssh-keygen ( ).
man ssh-keygen
читает:
-R
имя хостаУдаляет все ключи, принадлежащие к
hostname
изknown_hosts
файла. Эта опция полезна для удаления хэшированных хостов (см.-H
опцию выше).
решение3
Самое простое решение:
rm -f .ssh/known_hosts
ssh заново создаст файл, но вы потеряете проверку ключей для других хостов!
Или вы можете использовать:
ssh-keygen -R "hostname"
Или сообщение ssh "man-in-the-middle" должно указывать, какая строка файла known_hosts имеет подозрительный отпечаток. Отредактируйте файл, перейдите к этой строке и удалите ее.
решение4
Все ответы хороши, но для настоящих профессионалов SSH у нас нет информации о том, как удалить подпись SSH с (нестандартным) номером порта.
Простая команда удаления подписи хоста SSH:
ssh-keygen -R example.com
Сложное удаление ключа SSH, например, вы подключаетесь к SSH через нестандартный порт 222:
ssh example.com -p 222
и вы получаете предупреждение, и чтобы убрать его, вам нужно использоватьквадратные скобкиНомер порта двоеточия:
ssh-keygen -R [example.com]:222
Обратите внимание, что, скорее всего, для того же хоста будет существовать IP-запись, поэтому ее также необходимо удалить.
Надеюсь, это поможет пользователям нестандартной конфигурации.