Назад | Перейти на главную страницу

Как убрать строгую проверку ключей RSA в SSH и в чем тут проблема?

У меня есть сервер Linux, который всякий раз, когда я подключаюсь, показывает мне сообщение об изменении ключа хоста SSH:

$ ssh root @ host1 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@ @ ПРЕДУПРЕЖДЕНИЕ: ИДЕНТИФИКАЦИЯ УДАЛЕННОГО ХОЗЯЙНА ИЗМЕНИЛАСЬ! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@ ВОЗМОЖНО, ЧТО КТО-ТО ДЕЛАЕТ ГРЕБНОЕ! Кто-то мог подслушивать вас прямо сейчас (атака «человек посередине»)! Также возможно, что ключ хоста RSA только что был изменен. Отпечаток ключа RSA, отправленный удаленным хостом, - 93: a2: 1b: 1c: 5f: 3e: 68: 47: bf: 79: 56: 52: f0: ec: 03: 6b. Пожалуйста, обратитесь к системному администратору. Добавьте правильный ключ хоста в /home/emerson/.ssh/known_hosts, чтобы избавиться от этого сообщения. Ключ оскорбления в /home/emerson/.ssh/known_hosts:377

Ключ хоста RSA для host1 изменился, и вы запросили строгую проверку. Ошибка проверки ключа хоста.

Он держит меня в системе в течение нескольких секунд, а затем закрывает соединение.

host1: ~ / .ssh # Чтение с удаленного хоста host1: сброс соединения одноранговым узлом Соединение с host1 закрыто.

Кто-нибудь знает, что происходит и что я могу сделать, чтобы решить эту проблему?

Пожалуйста, не удаляйте весь файл known_hosts, как рекомендуют некоторые люди, это полностью аннулирует смысл предупреждения. Это функция безопасности, которая предупреждает вас, что, возможно, произошла атака человека в середине.

Я предлагаю вам определить, почему он думает, что что-то изменилось, скорее всего, обновление SSH изменило ключи шифрования из-за возможной дыры в безопасности. Затем вы можете удалить эту конкретную строку из файла known_hosts:

sed -i 377d ~/.ssh/known_hosts

это dвыбирает строку 377, как показано после двоеточия в предупреждении:

/home/emerson/.ssh/known_hosts:377

В качестве альтернативы вы можете удалить соответствующий ключ, выполнив следующие действия

ssh-keygen -R 127.0.0.1 (obviously replace with the server's IP)

Пожалуйста, НЕ очищайте весь файл и убедитесь, что это действительно та машина, к которой вы хотите подключиться, перед очисткой конкретного ключа.

Я думаю, что, хотя некоторые из ответов здесь относятся к рекомендуемому образу действий в вопросе OP, он не полностью отвечает на вопрос.

Вопрос гласит: «Как убрать строгую проверку ключей RSA в SSH и в чем здесь проблема?»

Проблема здесь, как советуют некоторые другие, в изменении хоста, вероятно, из-за переустановки сервера (наиболее распространенный сценарий). И действительно, рекомендуемое решение - удалить неправильный ключ из файла .ssh / authorized_keys с помощью встроенного sed.

Однако я не нашел ответов на конкретную часть вопроса "Как убрать строгую проверку ключей RSA в SSH".

Вы можете удалить проверку StrictHostKey в файле конфигурации ssh, обычно хранящемся в ~/.ssh/config.

Ниже приведен пример блока Host:

Host 101
  HostName yourip|hostname
  User youruserid
  IdentityFile /path/to/keyfile
  Port 22
  StrictHostKeyChecking no

Специально добавленная строка - последняя StrictHostKeyChecking no который делает именно то, что это. В зависимости от вашего конкретного сценария это может быть полезно для вас, например, запуск нескольких виртуализированных контейнеров на выделенном сервере всего за несколько IP-адресов, остановка и запуск другого экземпляра с тем же IP.

Другой способ удалить StrictHostKeyChecking, когда вам нужно сделать это только для одного сервера:

ssh <server> -o StrictHostKeyChecking=no

Во-первых, это ваша машина? Вы сознательно меняли ключи хоста? В противном случае я был бы очень обеспокоен тем, что что-то изменило эти данные.

Во-вторых, включите отладку ssh,

ssh -vvv user@host

и посмотрите, что это вам говорит, также попробуйте заглянуть в / var / log / secure и / var / log / messages на сервере, к которому вы пытаетесь подключиться, для подсказок, sshd выдает хорошие сообщения об ошибках.

В-третьих, эта машина подключена к Интернету? Должны ли вы действительно разрешать вход в систему с правами root?

Вы получаете это, потому что что-то изменилось (например, новый сетевой адаптер, новый IP-адрес, изменение серверного программного обеспечения и т. Д.). В фокусе безопасности есть хорошая статья о Защита ключа хоста SSH.

Просто удалите ключ (используя SFTP или аналогичный) с сервера, отредактировав $HOME/.ssh/known_hosts файл и примите новый при следующем подключении.

Ваше соединение может быть прервано из-за параметра StrictHostKeyChecking. Видеть эта тема по аналогичной проблеме.

Поскольку «хост» [в широком смысле слова, это может быть что угодно, от переустановки / мультизагрузки до совершенно другого компьютера с IP-адресом, к которому вы подключались раньше, например], клиент ssh считает измененным, это дает ошибка.

Нет необходимости отключать строгую проверку и нецелесообразно массовое удаление сохраненных ключей.

Вполне возможно иметь два разных ключа, перечисленных в known_hosts для определенного имени хоста или IP-адреса; предоставляя вам 2 альтернативы в зависимости от того, считаете ли вы, что вам может понадобиться `` старый '' ключ, который в настоящее время хранится в known_hosts

Либо удалите конкретный ключ, на который он ссылается, на l377 из known_hosts для OP, либо оставьте оба

Самый простой способ сохранить и то, и другое, избегая удаления ключей в known_hosts, - это

  1. Измените known_hosts, чтобы временно добавить # в начало "старой" записи, указанной в known_hosts [@ l377].
  2. Подключите [ssh к хосту], согласитесь с предложением добавить новый ключ "автоматически"
  3. Затем повторно отредактируйте known_hosts, чтобы удалить #

больше ответов на «Добавить правильный ключ хоста в known_hosts» / несколько ключей хоста ssh для каждого имени хоста?