it-swarm-ru.tech

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

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

$ ssh root @ Host1 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@ @ ПРЕДУПРЕЖДЕНИЕ: ИЗМЕНЕНО УДАЛЕННАЯ ИДЕНТИФИКАЦИЯ Хоста! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@ IT IS ВОЗМОЖНО, ЧТО-то IS ЧТО-ТО ДЕЛАЕТСЯ! Кто-то может подслушивать вас прямо сейчас (man-in - атака по середине)! Также возможно, что ключ хоста 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 закрыто.

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

45
setatakahashi

Пожалуйста, не удаляйте весь файл 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)

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

71
Adam Gibbins

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

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

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

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

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

Пример хост-блока представлен ниже:

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

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

27
Joel G Mathew

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

ssh <server> -o StrictHostKeyChecking=no
11
Greg Dougherty

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

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

ssh -vvv [email protected]

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

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

5
Dave Cheney

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

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

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

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

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

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

больше ответов на "Добавить правильный ключ хоста в known_hosts"/несколько ключей SSH хоста для имени хоста?

3
Mark

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

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

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

3
user1797