У меня есть сервер 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, - это
больше ответов на «Добавить правильный ключ хоста в known_hosts» / несколько ключей хоста ssh для каждого имени хоста?