Вопрос Проблема с соединением SSH с ошибкой «Ошибка проверки ключа хоста ...»


Я могу подключиться к другой машине Ubuntu в своей локальной сети через SSH. На обоих компьютерах, которые я установил OpenSSH-сервер  но с другого компьютера Ubuntu я не могу подключиться к своему ПК через SSH, и я получил эту ошибку:

Ошибка проверки ключа хоста ...


139
2018-05-28 11:36


происхождения


Вы используете имена хостов или IP-адреса? - Thorbjørn Ravn Andersen
Не похоже, но я получил ту же ошибку, но из-за другой проблемы: serverfault.com/questions/494916/... - zengr
Это не проблема, связанная с Ubuntu. Может произойти с любым ssh из командной строки. - MarkHu


ответы:


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

SSH хранит ключи хоста удаленных хостов в ~/.ssh/known_hosts, Вы можете отредактировать этот текстовый файл вручную и удалить старый ключ (вы можете увидеть номер строки в сообщении об ошибке) или использовать

ssh-keygen -R hostname

(что я узнал из ответа на Можно ли удалить конкретный ключ хоста из файла known_hosts из SSH?).


164
2018-05-28 13:19



Это также может означать, что у вас просто нет ключа хоста удаленного хоста. Например, если я rm ~/.ssh/*, тогда ssh -o BatchMode=yes root@somewhere, если ничего другого не будет, я получу Host key verification failed.  Не важно, если вы всегда интерактивны, но релевантно для скриптов, которые сталкиваются с одной и той же ошибкой. - Ron Burk
Неудивительно, ssh-keygen -R example.net:7999 доходность Host example.net:7999 not found in known_hosts, - alex
Я удалил known_hosts файл и ssh. Это сработало. - ParisaN


Если вы работаете в определенных ситуациях с удаленным / сценарием, где вам не хватает интерактивного доступа к строке приглашения к добавлению-хосту, выполните следующие действия:

$ ssh -o StrictHostKeyChecking=no user@something.example.com uptime

Предупреждение. Постоянно добавлено «something.example.com, 10.11.12.13» (RSA) в список известных хостов.


104
2017-07-24 00:47



+1, это уродливое решение, но в некоторых случаях автоматизированных процессов мониторинга, которые работают с dymaic ip-connected устройствами, это простое и приемлемое решение. - Ninsuo
+1 Например, для исполнения Дженкинса это хорошее решение. благодаря - Lobo
@Lobo не может согласиться больше, я использую его для jenkins, что круто sh """ssh -o StrictHostKeyChecking=No ec2-user@someIpAddress-e2e sudo service tomcat restart""" - prayagupd
Спас мою жизнь. Жизнезащитное решение. - user1735921


Также иногда возникает ситуация, когда вы работаете с последовательной консолью, а затем проверяете выше команду в подробном режиме -v покажут вам /dev/tty не существует, в то время как он делает.

ssh -v user@hostname

В приведенном выше случае просто удалите /dev/tty и создать символическую ссылку /dev/ttyS0 в /dev/tty,

rm /dev/tty
ln -s /dev/ttyS0 /dev/tty

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


10
2018-05-27 13:01



+1 для рекомендации использовать параметр -v; это может многое помочь при отладке ssh-проблем. - daniel kullmann


В моем случае это было вызвано проблемой udev - не было /dev/tty узел устройства. Решение для меня было просто:

sudo mknod -m 666 /dev/tty c 5 0

8
2017-07-25 20:28





Ну, это просто потому, что второй ubuntu требует соединения с помощью ключа, а не пароля.

Я предлагаю вам использовать sudo dpkg-reconfigure openssh-server на вашем компьютере, а затем он должен работать правильно. Он сбросит конфигурацию для openssh и вернется к аутентификации по умолчанию.

Вторая возможность заключается в том, что у вас уже есть ключ для вашего другого ubuntu на вашем ПК, и что он изменился, и поэтому он больше не распознается. В этом случае вам придется отредактировать файл .ssh/authorized_keys чтобы удалить проблемную строку, идентифицирующую ваш ubuntu.


3
2018-05-28 11:39





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

ssh-keygen -f "/home/USER/.ssh/known_hosts" -R HOSTNAME

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

ssh-copy-id HOSTNAME

Затем я следил за подсказками оттуда, пока не смог войти в сервер.


3
2018-04-15 16:09



В качестве этой команды я получаю предложение в ubuntu 12.4. - MaNKuR


На терминале:

ssh -o StrictHostKeyChecking=No -i YourPublicKey.pem user@example.com uptime

Появится следующее сообщение или подобное:

Warning: Permanently added 'example.com, XX.XXX.XXX.XX' (ECDSA) to the list of known hosts.
 00:47:37 up 3 min,  0 users,  load average: 0.00, 0.00, 0.00

Затем подключитесь к EC2 как обычно:

ssh -i YourPublickey.pem user@example.com

3
2018-03-27 00:50



я получил command-line line 0: Bad yes/no/ask argument. потому что вы ошибочно используете «Нет» вместо «нет» в качестве аргумента для StrictHostKeyChecking - Axel Bregnsbo


Это означает, что ваш ключ удаленного хоста был изменен (может быть изменение пароля хоста),

Ваш терминал предложил выполнить эту команду как пользователь root

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]:4231

Вам нужно удалить это имя хоста из списка хостов на вашем ПК / сервере. Скопируйте эту предложенную команду и выполните ее как пользователь root.

$ sudo su                                                            // Login as a root user

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]:4231   // Terminal suggested command execute here
Host [www.website.net]:4231 found: line 16 type ECDSA
/root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old

$ exit                                                               // Exist from root user

$ sudo ssh root@www.website.net -p 4231                              // Try again

Надеюсь, это сработает.


2
2017-08-14 04:59





Вы должны изменить свой ключ таким образом: Из данной ошибки найдите, какой ключ хоста изменился для Пример: Нарушение ключа ECDSA в /Users/user-name/.ssh/known_hosts:5 5-я клавиша изменилась, поэтому сделайте следующее:

sed -i '5d' ~/.ssh/known_hosts

Обратите внимание: вы должны быть root или иметь привилегию для sudo.


1
2018-03-13 15:22



Нет, если вы не делаете это для кого-то другого, это не требует root или sudo. Вы редактируете файл в своем домашнем каталоге. Второй: для работы команды требуется GNU sed. - techraf
Возможно, вы правы, но я попытался ssh от Mac OSX до ubuntu-сервера, и я должен это сделать. кстати, спасибо за ваш комментарий. - Amir.A.G


вы должны поместить ключ rsa целевого хоста в исходный хост /home/user/.ssh/known_hosts выполнив это на целевой

ssh-keyscan -t rsa @targethost

1
2018-04-06 15:42





pico ~/.ssh/known_hosts  и удалите все строки после того, как вы просто подключитесь, и вы получите новый ключ.


0
2017-10-18 06:26



Это опасное решение, потому что вы удалите ВСЕ ключи хоста. Принятое решение, ssh-keygen -R hostname лучше. - msanford