Я могу соединиться с другой машиной Ubuntu в своей LAN через SSH. На обоих из затем ПК я установил openssh-сервер, но от другого компьютера Ubuntu я не могу соединиться со своим ПК через SSH, и я получил эту ошибку:
Проверка ключа хоста перестала работать...
"Проверка ключа хоста, неудавшаяся", означает, что ключ хоста удаленного хоста был изменен.
SSH хранит ключи хоста удаленных хостов в ~/.ssh/known_hosts
. Можно или отредактировать тот текстовый файл вручную и удалить старый ключ (Вы видите номер строки в сообщении об ошибке), или использовать
ssh-keygen -R hostname
- R имя хоста
Удаляет все ключи, принадлежащие имени хоста из known_hosts файла. Эта опция полезна для удаления хешированных хостов.
(до которого я учился от ответа, это возможный удалить конкретный ключ хоста из known_hosts файла SSH?).
Ну, это просто, потому что вторая человечность требует соединения ключом и не паролем.
Я предлагаю, чтобы Вы использовали sudo dpkg-reconfigure openssh-server
на Вашем ПК, и затем это должно работать правильно. Это сбросит конфигурацию для openssh и должно возвратиться к аутентификации по паролю по умолчанию.
Вторая возможность состоит в том, что уже существует ключ для Вашей другой человечности в Вас ПК, и что это больше изменяло таким образом быть не распознанным. В этом случае необходимо будет отредактировать файл .ssh/authorized_keys
удалить проблематичную строку, определяющую Вашу человечность.
В моем случае это было вызвано udev проблемой - было нет /dev/tty
узел устройства. Решение для меня было справедливо:
sudo mknod -m 666 /dev/tty c 5 0
pico ~/.ssh/known_hosts
и удалите все строки, после того, как просто снова соединятся, и Вы получите новый ключ.
Также иногда существует ситуация, когда Вы работаете над последовательной консолью, затем проверяя выше команды в подробный режим -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
к удаленному местоположению, таким образом, пароль не запрашивается и Вы получаете доступ входа в систему.
Если Вы работаете в определенных удаленных ситуациях / ситуациях со сценариями, где Вы испытываете недостаток в интерактивном доступе к prompt-to-add-hostkey, работе вокруг этого как это:
$ ssh -o StrictHostKeyChecking=no user@something.example.com uptime
Предупреждение: Постоянно добавленный 'something.example.com, 10.11.12.13' (RSA) к списку известных хостов.
Это - старый поток, и я просто натыкался на этот ответ, я просто добавлю, что я сделал для решения этого.
ssh-keygen -f "/home/USER/.ssh/known_hosts" -R HOSTNAME
Я просто посмотрел на сообщение об ошибке, что это бросило в меня, и это сказало для выполнения той команды для удаления его из списка хостов. После этого я сделал следующее:
ssh-copy-id HOSTNAME
Чем я следовал за подсказками оттуда, пока я не смог к ssh в сервер.
Необходимо изменить ключ таким образом: От Вашей данной ошибки находят который ключ хоста измененный, например: Оскорбление ключ ECDSA/Users/user-name/.ssh/known_hosts:5 сказал, что 5-й измененный ключ, сделайте это:
sed -i '5d' ~/.ssh/known_hosts
Уведомление: необходимо быть корнем или иметь полномочие для sudo.
Мое решение прибывает из этого сообщения в блоге: Согласование алгоритма привело к сбою для SSH Безопасный Клиент Shell
Необходимо изменить файл следующим образом:
sudo nano /etc/ssh/sshd_config
И затем добавьте следующее:
# Ciphers
Ciphers aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,arcfour
KexAlgorithms diffie-hellman-group1-sha1
В основном Вы попробовали различные решения, пока Вы не находите тот, который может решить Вашу проблему. Если вышеупомянутые решения не работают, попробуйте этого. Если этот не работает также, судите других.
необходимо поместить rsa ключ целевого узла в исходный хост /home/user/.ssh/known_hosts
путем выполнения этого на цели
ssh-keyscan -t rsa @targethost
На терминале:
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
Его средства Ваш удаленный ключ хоста был изменен (Может быть изменение пароля хоста),
Ваш терминал предложил выполнить эту команду как пользователя 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
Надеюсь, что это работает.
Можете быть Вы, просто должен ввести "да", когда ssh подтверждают, что Вы хотите продолжить соединяться.
Как рев.
The authenticity of host 'xxx' can't be established.
ECDSA key fingerprint is yyy.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'xxx' (ECDSA) to the list of known hosts.
Enter passphrase for key '/Users/ysy/.ssh/id_rsa':
Затем введите свой пароль.
Обратите внимание на "Действительно ли Вас, уверены, что Вы хотите продолжить соединяться (да/нет)? да". Необходимо войти да, не входят.
Кроме строго отключают проверку ключа хоста, можно также соединиться путем ввода:
ssh -o LogLevel=quiet -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no <username@target_machine_ip_or_domain_name>
chmod 666 /dev/tty
еще одно tty решение - иногда, этот файл устройств имеет неправильные полномочия.
Просто сделайте "sudo vi/var/root/.ssh/known_hosts" и удалите строку, которая удерживает клавишу для хоста, с которым Вы пытаетесь соединиться и повторно подключить снова.
Я не знаю о Вашей конкретной ситуации, но по всей вероятности эта ошибка пришла с сообщением как это:
my_mac:~ oivanche$ sudo ssh pi@192.168.0.45
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:sx1Z4xyGY9venBP6dIHAoBj0VhDOo7TUVCE2xWXpzQk.
Please contact your system administrator.
Add correct host key in /var/root/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /var/root/.ssh/known_hosts:74
ECDSA host key for 192.168.0.45 has changed and you have requested strict checking.
Host key verification failed.
При чтении журнала более тщательно, Вы будете видеть, что ключ, который Вы имеете от хоста, конфликтует с ключом, который Вы уже имеете - в этом случае это находятся на строке 74 из known_hosts файла (Нарушающий ключ ECDSA/var/root/.ssh/known_hosts:74). Удалите строку из known_hosts, сохраните изменения и снова соединитесь.
Если вы добавите параметр -v
в ssh (возможно, более одного раза), он распечатает всевозможную информацию, которая может помочь в выявлении проблемы. В моем случае он жаловался на разрешения / dev / tty
, а chmod 666 / dev / tty
устранил проблему.