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

113

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

  

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

    
задан Navid 28.05.2011 в 13:36
источник

12 ответов

140

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

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

ssh-keygen -R hostname

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

    
ответ дан elmicha 28.05.2011 в 15:19
источник
84

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

$ ssh -o StrictHostKeyChecking=no [email protected] uptime

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

    
ответ дан MarkHu 24.07.2013 в 02:47
10

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

ssh -v [email protected]

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

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

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

    
ответ дан Peeyush 27.05.2012 в 15:01
8

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

sudo mknod -m 666 /dev/tty c 5 0
    
ответ дан Mark 25.07.2011 в 22:28
3

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

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

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

    
ответ дан MP0 28.05.2011 в 13:39
3

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

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

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

ssh-copy-id HOSTNAME

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

    
ответ дан Hatem Jaber 15.04.2015 в 18:09
2

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

Ваш терминал предложил выполнить эту команду как пользователь 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 [email protected] -p 4231                              // Try again

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

    
ответ дан Jay Patel 14.08.2016 в 06:59
1

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

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

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

ответ дан Amir.A.G 13.03.2016 в 16:22
1

В терминале:

ssh -o StrictHostKeyChecking=No -i YourPublicKey.pem [email protected] 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 [email protected]
    
ответ дан Vitor Abella 27.03.2017 в 02:50
1

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

ssh-keyscan -t rsa @targethost
    
ответ дан rob brennan 06.04.2017 в 17:42
0

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

    
ответ дан H0nsu 18.10.2012 в 08:26
0

Мое решение приходит из этого сообщения в блоге: Не удалось выполнить согласование алгоритма для клиента SSH Secure Shell

Вам необходимо изменить файл следующим образом:

sudo nano /etc/ssh/sshd_config

Затем добавьте следующее:

# Ciphers
Ciphers aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,arcfour
KexAlgorithms diffie-hellman-group1-sha1

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

    
ответ дан Frank Puk 06.04.2017 в 19:01