Как убрать строгую проверку ключа 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 закрыто.
Кто-нибудь знает, что происходит и что я мог сделать, чтобы решить эту проблему?
6 ответов
Пожалуйста, не удаляйте весь файл known_hosts в соответствии с рекомендациями некоторых людей, это полностью лишает смысла предупреждения. Это функция безопасности, которая предупреждает вас о возможном нападении человека в середине атаки.
Я предлагаю вам определить, почему он думает, что что-то изменилось, скорее всего, обновление SSH изменило ключи шифрования из-за возможной дыры в безопасности. Затем вы можете удалить эту конкретную строку из вашего файла known_hosts:
sed -i 377d ~/.ssh/known_hosts
Это добавляет строку 377, как показано после двоеточия в предупреждении:
/home/emerson/.ssh/known_hosts:377
В качестве альтернативы вы можете удалить соответствующий ключ, выполнив следующее
ssh-keygen -R 127.0.0.1 (obviously replace with the server's IP)
Пожалуйста, НЕ удаляйте весь файл и убедитесь, что это действительно тот компьютер, к которому вы хотите подключиться, перед тем как очищать конкретный ключ.
Я думаю, что хотя некоторые из ответов здесь касаются рекомендуемого курса действий в вопросе ФП, он не полностью отвечает на вопрос.
Вопрос гласит: "Как убрать строгую проверку ключа 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.
Еще один способ удалить 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 of known_hosts для OP, либо оставьте оба
Самый простой способ сохранить оба, избегая удаления ключей в known_hosts, это
- Отредактируйте известные_хосты, добавив # в начале "старой" записи, на которую временно ссылаются известные_хосты [@l377]
- Подключите [ssh к хосту], согласитесь на приглашение для добавления нового ключа "автоматически"
- Затем заново отредактируйте known_hosts, чтобы удалить #
больше ответов в "Добавить правильный ключ хоста в known_hosts" / несколько ключей SSH хоста для имени хоста?