Как установить пару ключей ssh, когда "проверка ключа хоста не удалась"

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

mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t 
ssh-copy-id [email protected]

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

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

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

Ответ 1

ssh-keygen -R hostname

Это удаляет оскорбительный ключ из known_hosts

В записи справочной страницы:

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

Ответ 2

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

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

Кроме того, я создал следующий script, чтобы проверить, находится ли конкретный 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

Ответ 3

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

Ответ 4

Шаг 1: $Bhargava.ssh #

ssh-keygen -R 199.95.30.220

step2: $Bhargava.ssh #

ssh-copy-id [email protected]

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

step3: Bhargava.ssh #

ssh [email protected]

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

rm -f /home/user/.ssh/known_hosts

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

(P.S. Это точно указано в сообщении об ошибке)

Ответ 6

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

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

Ответ 7

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

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

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