Как установить пару ключей ssh, когда «Проверка ключа хоста не удалась» - PullRequest
46 голосов
/ 12 ноября 2010

Я настроил пары ключей ssh ​​между моим рабочим столом и двумя серверами, а также с серверов на мой рабочий стол, но после переустановки ОС на моем рабочем столе я не могу восстановить пару ключей, входящую в мой рабочий стол, следующим образом:

mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t 
ssh-copy-id username@server

Я получаю следующую ошибку:

(имена курсив изменены для защиты невинных Мой рабочий стол - Ubuntu, и я не могу найти ответ здесь )

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@ @ ПРЕДУПРЕЖДЕНИЕ: ДИСТАНЦИОННАЯ ИДЕНТИФИКАЦИЯ ХОЗЯИНА ИЗМЕНИЛАСЬ! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ ВОЗМОЖНО, ЧТО-ТО ЧТО-ТО ДЕЛАЕТ! Кто-то может подслушивать вас прямо сейчас (человек посередине атака)! Также возможно, что ключ хоста RSA был только что изменен. Отпечаток ключа RSA, отправленный удаленным хостом, аб: CD: эф: Г.Х. Пожалуйста, обратитесь к системному администратору. Добавьте правильный ключ хоста в /home/user/.ssh/known_hosts, чтобы получить избавиться от этого сообщения. Оскорбительный ключ в /home/user/.ssh/known_hosts:1 Ключ хоста RSA для user.server изменился, и вы запросили строгий проверка. Ошибка проверки ключа хоста.

Ответы [ 8 ]

109 голосов
/ 14 декабря 2011
ssh-keygen -R hostname

При этом удаляется нарушающий ключ из known_hosts

Запись справочной страницы:

-R hostname Удаляет все ключи, принадлежащие имени хоста, из файла known_hosts,Эта опция полезна для удаления хэшированных хостов (см. Параметр -H выше).

11 голосов
/ 24 декабря 2013

Скорее всего, удаленный хост ip или ip_alias отсутствует в файле ~ / .ssh / known_hosts. Вы можно использовать следующую команду для добавления имени хоста в файл known_hosts.

$ssh-keyscan -H -t rsa ip_or_ipalias >> ~/.ssh/known_hosts

Кроме того, я сгенерировал следующий скрипт, чтобы проверить, есть ли конкретный ip или ipalias в файле know_hosts.

#!/bin/bash
#Jason Xiong: Dec 2013   
# The ip or ipalias stored in known_hosts file is hashed and   
# is not human readable.This script check if the supplied ip    
# or ipalias exists in ~/.ssh/known_hosts file

if [[ $# != 2 ]]; then
   echo "Usage: ./search_known_hosts -i ip_or_ipalias"
   exit;
fi
ip_or_alias=$2;
known_host_file=/home/user/.ssh/known_hosts
entry=1;

cat $known_host_file | while read -r line;do
  if [[ -z "$line" ]]; then
    continue;
  fi   
  hash_type=$(echo $line | sed -e 's/|/ /g'| awk '{print $1}'); 
  key=$(echo $line | sed -e 's/|/ /g'| awk '{print $2}');
  stored_value=$(echo $line | sed -e 's/|/ /g'| awk '{print $3}'); 
  hex_key=$(echo $key | base64 -d | xxd -p); 
  if  [[ $hash_type = 1 ]]; then      
     gen_value=$(echo -n $ip_or_alias | openssl sha1 -mac HMAC \
         -macopt hexkey:$hex_key | cut -c 10-49 | xxd -r -p | base64);     
     if [[ $gen_value = $stored_value ]]; then
       echo $gen_value;
       echo "Found match in known_hosts file : entry#"$entry" !!!!"
     fi
  else
     echo "unknown hash_type"
  fi
  entry=$((entry + 1));
done
5 голосов
/ 22 апреля 2016

Шаг 1: $ Bhargava.ssh #

ssh-keygen -R 199.95.30.220

step2: $ Bhargava.ssh #

ssh-copy-id hostname@199.95.30.220

          Enter the the password.........

step3: Бхаргава .ssh #

ssh hostname@199.95.30.220

Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.13.0-68-generic x86_64) * Documentation: https://help.ubuntu.com/ Ubuntu 14.04.3 LTS server : 228839 ip : 199.95.30.220 hostname : qt.example.com System information as of Thu Mar 24 02:13:43 EDT 2016 System load: 0.67 Processes: 321 Usage of /home: 5.1% of 497.80GB Users logged in: 0 Memory usage: 53% IP address for eth0: 199.95.30.220 Swap usage: 16% IP address for docker0: 172.17.0.1 Graph this data and manage this system at: https://landscape.canonical.com/ Last login: Wed Mar 23 02:07:29 2016 from 103.200.41.50

hostname @ qt: ~ $

5 голосов
/ 12 ноября 2010

Если вы уверены, сервер правильный, sed -i 1d ~/.ssh/known_hosts удалит строку 1 вашего локального ~/.ssh/known_hosts. Новый правильный ключ будет добавлен в файл при следующем подключении.

2 голосов
/ 27 мая 2012

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

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

0 голосов
/ 09 апреля 2018

Сначала вы должны удалить существующий ключ.Ключи SSH в большинстве ОС Linux будут сохранены в этом файле "/root/.ssh/known_hosts", поэтому для удаления ключа, связанного с хостом, будет использоваться следующая команда:

ssh-keygen -f "/root/.ssh/known_hosts" -R [Hostname]

С уважением, К1

0 голосов
/ 14 августа 2016

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

Ваш терминал предложил выполнить эту команду от имени пользователя 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

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

0 голосов
/ 12 ноября 2010
rm -f /home/user/.ssh/known_hosts

или откройте его и удалите запись для неверного ip / hostname

(P.S. Это точно говорит вам в сообщении об ошибке, которое вы отправили)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...