Я построил несколько виртуальных машин за последние несколько недель. Проблема в том, что предупреждает .ssh/known_hosts
меня Человек в среднем . Это происходит потому, что с IP-адресом виртуальной машины связан другой отпечаток.
В этом .ssh/known_hosts
файле, однако, я не нахожу записи, относящиеся к IP, только две странные, подобные ключу строки и "ssh-rsa".
У кого-нибудь есть идеи о том, как удалить старый ключ known_hosts
?
ssh
hosts
openssh
man-in-the-middle
Адам Матан
источник
источник
HashKnownHosts yes
установлен.Ответы:
Изменит файл ~ / .ssh / known_hosts: 6, удалив 6-ю строку.
На мой взгляд, использование
ssh-keygen -R
- лучшее решение для опытных пользователей openssh, в то время как ваш обычный администратор Linux будет лучше поддерживать свои навыки sed, используя вышеописанный метод.источник
/etc/sudoers
без нихvisudo
. Если вы хотите оттачивать своиsed
навыки, продолжайте и делайте это, не портя свою систему.ssh-keygen -R
иsed -i {line}d
довольно «официальные», и оба будут работать в обозримом будущем. Util ssh-keygen позволяет удалять по номеру строки, оба являются вполне приемлемыми (потому что с номерами строк часто легче работать и они менее подвержены ошибкам, чем при работе с именами хостов современных центров обработки данных).man ssh-keygen
упоминается, чтоssh-keygen -R hostname
вы только что сказали,ssh-keygen -R
без указания имени хоста, и вы не объяснили, что вы подразумеваете под этим.Самое простое решение:
ssh снова создаст файл, но вы потеряете проверку ключей для других хостов!
Или вы можете использовать:
Или в сообщении ssh "man-in-the-middle" должно быть указано, какая строка файла known_hosts имеет отпечаток пальца. Отредактируйте файл, перейдите к этой строке и удалите его.
источник
ssh-keygen -R hostname
тоже будет работатьssh-keygen
Опция была добавлена из - за комментарием, но без каких - либо объяснений. Я не думаю, что этот ответ заслуживает так много голосов.Для этого есть переключатель ssh-keygen (
-R
).man ssh-keygen
гласит:источник
[localhost]:port
, используя скобки, потому что я использовал собственный порт, я думаю = /. Как уже говорили другие, я бы также использовал подход без проверки ключей SSH для разработки моей переходной / тестовой системы.ssh-keyscan -H my.ssh.server.example.com >> ~/.ssh/known_hosts;
В предупреждении будет указана точная строка в известном файле hosts.
Вот пример:
Видишь
/home/user/.ssh/known_hosts:6
часть? Он определяет файл и номер строки.источник
Вам нужно выполнить следующую команду, чтобы избавиться от этой проблемы. Откройте терминал и введите следующую команду:
Для всех приведенных ниже примеров просто замените значение после -R
источник
ssh-keygen -R
чем любой другой ответ до сих пор. Это показывает на примере именно то, что вы можете написать после-R
. Так что этот ответ стоит того, хотя он и не совсем новый.Вы также можете указать ssh не проверять файл known_hosts, используя флаги UserKnownHostsFile и StrictHostKeyChecking.
Например:
Для простоты использования вы можете использовать псевдоним:
Теперь вы можете просто boldssh, когда вы уверены, что доверяете сертификату сервера.
источник
~/.ssh/known_hosts
актуальность? Почему бы просто не пойти дальше и использоватьtelnet
? «всякий раз, когда вы уверены» - если вы когда-либо в этом уверены, тогда вы понятия не имеете, что такое атака MITM, и вам, вероятно, следует потратить некоторое время на чтение хорошей литературы.Все ответы хороши, но для реального SSH pro у нас отсутствует информация о том, как удалить ssh-подпись с номером порта.
Простая команда удаления подписи хоста SSH:
Сложный ключ ssh удаляется, например, вы подключаетесь к ssh через нестандартный порт 222:
и вы получите предупреждение, и чтобы удалить это, вам нужно использовать квадратные скобки номер порта двоеточия:
Надеюсь, это поможет пользователям нестандартной конфигурации.
источник
Вот метод, использующий редактор Ex:
где 6-й номер вашей линии, указанный в предупреждающем сообщении. Такие как этот:
В общем, рекомендуется использовать
ex
для редактирования файлов неинтерактивно , а не тоsed
, что больше S- tream ED itor и его-i
параметр, который является нестандартным расширением FreeBSD.источник
Запись для имени хоста или ip должна быть в первом столбце. В предупреждении также должен быть указан номер строки, в которой находится нарушающий ключ.
источник
Вы также можете удалить одну строку из известных хостов с помощью, например, rmknownhost 111 (111 - строка для удаления):
Сохраните это как
rmknownhost
в папке из вашегоPATH
.источник
sshdel() { sed -i "${@}d" ~/.ssh/known_hosts; }
и вызовите его с помощьюsshdel [line number]
. нет рубина, нет двоичного кода, нет проблем.Это текстовый файл. Вы можете легко редактировать с помощью vi (m) и просто удалить нужную строку (dd) и сохранить файл (wq). Но если есть конкретная команда для удаления хоста, это, вероятно, самый безопасный метод.
источник