Удалите ключ из known_hosts

Я создал несколько виртуальных машин в течение последних нескольких недель. Проблема, .ssh/known_hosts дает мне Человека в среднем предупреждении. Это происходит, потому что другой цифровой отпечаток связан с IP виртуальной машины.

В .ssh/known_hosts файл, однако, я не нахожу запись связанной с IP, только двумя причудливыми, подобными ключу строками и "ssh-rsa".

Делает у любого есть любые идеи о том, как удалить старый ключ из known_hosts?

131
задан 16.07.2014, 00:50

5 ответов

sed -i '6d' ~/.ssh/known_hosts

Изменит файл ~/.ssh/known_hosts:6, удаляя 6-ю строку.

По-моему, использование ssh-keygen -R лучшее решение для openssh продвинутого пользователя, в то время как Ваш постоянный администратор Linux добился бы большего успеха для хранения его sed навыков новыми при помощи вышеупомянутого метода.

90
ответ дан 07.12.2019, 07:47

Простое решение:

rm -f .ssh/known_hosts

ssh воссоздаст файл снова, но Вы теряете ключевую проверку другие хосты!

Или, можно использовать:

ssh-keygen -R "hostname"

Или ssh "man-in-the-middle" сообщение должен указать, какая строка known_hosts файла имеет незаконный цифровой отпечаток. Отредактируйте файл, переход к той строке и удалите его.

127
ответ дан 07.12.2019, 07:47

Предупреждение скажет Вам точную строку в известном файле hosts.

Вот пример:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@       WARNING: POSSIBLE DNS SPOOFING DETECTED!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The RSA host key for foo-bar.net has changed,
and the key for the corresponding IP address 127.0.0.1
is unchanged. This could either mean that
DNS SPOOFING is happening or the IP address for the host
and its host key have changed at the same time.
Offending key for IP in /home/user/.ssh/known_hosts:6
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

Посмотрите /home/user/.ssh/known_hosts:6 часть? Это указывает номер документа и номер строки.

18
ответ дан 07.12.2019, 07:47

Запись для имени хоста или IP должна быть в первом столбце. Предупреждение должно также перечислить номер строки, где незаконный ключ находится.

0
ответ дан 07.12.2019, 07:47

Можно также удалить одну строку из известных хостов с, например, rmknownhost 111 (111 строка для удаления):

#! /usr/bin/env ruby
line = ARGV[0] || raise("gimme line to remove")
hosts = File.expand_path("~/.ssh/known_hosts")
content = File.readlines(hosts)
removed = content.delete_at line.to_i - 1
puts "Removed:\n#{removed}"
File.open(hosts, 'w'){|f| f.write content * ""}

Сохраните это как rmknownhost в папке от Вашего PATH.

0
ответ дан 07.12.2019, 07:47

Теги

Похожие вопросы