Как исправить предупреждение о ключе главного ключа ECDSA

Я пытаюсь настроить SSH без пароля на сервере Ubuntu с помощью ssh-copy-id myuser @ myserver , но я получаю сообщение об ошибке:

  

Предупреждение: ключ хоста ECDSA для «myserver» отличается от ключа для IP-адреса «192.168.1.123»

Что вызывает это, и как его исправить? Я попытался удалить каталог .ssh на удаленном компьютере и запустить ssh-keygen -R "myserver" локально, но это не устраняет ошибку.

204 голоса | спросил Cerin 5 Maypm12 2012, 23:05:56

12 ответов


294

Удалите кеш-ключ для 192.168.1.123 на локальном компьютере:

  ssh-keygen -R 192.168.1.123
 
ответил grawity 6 Mayam12 2012, 00:20:21
38

В моем случае ssh-keygen -R ... не исправить предупреждение. У меня была дополнительная информация:

  Оскорбительный ключ для IP-адреса в /home/myuser/.ssh/known_hosts:8
Соответствие ключа хоста в /home/myuser/.ssh/known_hosts:24
 

Я просто отредактировал вручную ~ /.ssh /known_hosts и удалил строку 8 («оскорбительный ключ»). Я попытался переподключиться, хозяин был постоянно добавлен, и после этого все было в порядке!

ответил aardvarkk 11 MarpmTue, 11 Mar 2014 22:52:18 +04002014-03-11T22:52:18+04:0010 2014, 22:52:18
14

Я очень много разбираюсь между компьютерами локальной сети и двумя моими учетными записями веб-хостинга, поэтому я разобрал все виды шансов и концов с SSH, включая проблемы с проверкой подлинности, используя ssh -v чтобы увидеть, где и что пошло не так.

Решив эту проблему и не довольный ответами, я действительно хотел узнать «почему» ...

Триггер для моего дела: установленная новая серверная ОС при работе и при установке пакета openssh-server на сервере работы был создан новый набор ключей хоста. Раньше все мои серверные ОС были Ubuntu, и на этот раз он изменился на Debian (и я подозреваю, что существует разница в разрешениях).

Когда все ОС были Ubuntu, и я переустанавливаю ОС сервера, после первого SSH, я получаю такое предупреждение, которое я предпочитаю выше предупреждающего предупреждения!

  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@
@ ПРЕДУПРЕЖДЕНИЕ: ИДЕНТИФИКАЦИЯ ДИСТАНЦИОННОГО ОБРАЗЦА ИЗМЕНЕНА! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
ВОЗМОЖНО, ЧТО КТО-ТО ЧТО-ТО, ЧТО-НИБУДЬ!
Кто-то может подслушивать вас прямо сейчас (нападение «человек-в-середине»)!
Также возможно, что ключ хоста RSA только что был изменен.
Отпечаток пальца для ключа RSA, отправленного удаленным хостом,
06: еа: f1: f8: дБ: 75: 5с: 0c: аф: 15: D7: 99: 2d: эф: 08: 2a.
Пожалуйста, обратитесь к системному администратору.
Добавьте правильный ключ хоста в /home/user/.ssh/known_hosts, чтобы избавиться от этого сообщения.
Нарушение ключа в /home/user/.ssh/known_hosts:4
Ключ хоста RSA для домена.com изменился, и вы запросили строгую проверку.
Ошибка проверки ключа хоста.
 

Затем я открываю ~ /.ssh /known_hosts на компьютере, инициирующем ssh, удаляю эту строку, снова соединяюсь и это происходит:

  chris @ home ~ $ ssh work
Невозможно установить подлинность хоста '[работа]: 11122 ([99.85.243.208]: 11122).
Отпечаток ключа ECDSA составляет 56: 6d: 13: be: fe: a0: 29: ca: 53: da: 23: d6: 1d: 36: dd: c5.
Вы действительно хотите продолжить подключение (да /нет)? да
Предупреждение: Постоянно добавлено «[работа]: 11122 ([99.85.243.208]: 11122)» (ECDSA) в список известных хостов.
Linux rock 3.2.0-4-amd64 # 1 SMP Debian 3.2.51-1 x86_64
 

Этот бит о: 11122 - номер порта, на котором я отправляю SSH с брандмауэра

Я проверил резервные копии с прежнего сервера Ubuntu и отклонил мою новую установку Debian:

  Ubuntu: Debian:
# Пакет сгенерированный файл конфигурации # Пакет сгенерированный файл конфигурации
# Подробнее см. Man-страницу sshd (8). # См. Man-страницу sshd_config (5) для получения более подробной информации.

# Какие порты, IP-адреса и протоколы мы прослушиваем для # Какие порты, IP-адреса и протоколы мы слушаем
Порт 22 Порт 22
# Используйте эти параметры, чтобы ограничить интерфейс # Используйте эти параметры, чтобы ограничить интерфейсы
#ListenAddress :: #ListenAddress ::
#ListenAddress 0.0.0.0 #ListenAddress 0.0.0.0
Протокол 2 Протокол 2
# HostKeys для протокола версии 2 # HostKeys для протокола версии 2
HostKey /etc /ssh /ssh_host_rsa_key HostKey /etc /ssh /ssh_host_rsa_key
HostKey /etc /ssh /ssh_host_dsa_key HostKey /etc /ssh /ssh_host_dsa_key
------------------------------------------------ HostKey /и т.д. /SSH /ssh_host_ecdsa_key
# Privilege Separation включена для безопасности # Privilege Separation включена для обеспечения безопасности
UsePrivilegeSeparation yes UsePrivilegeSeparation yes
 

Итак, да, вероятно, хозяин недавно начал использовать ключи ecdsa, которые в последнее время основывались на изменениях Ubuntu, я бы обвинил в обновлении. Переход Ubuntu в сторону от мощной операционной системы Linux, на которую я рассчитывал, - это то, почему я установил Debian на этот раз.

Я прочитал security.SE q /a на ecdsa и уже удалил эту строку из sshd_config мой новый сервер Debian. (и запустить сервис ssh restart )

ответил Chris K 16 Jpm1000000pmThu, 16 Jan 2014 12:12:11 +040014 2014, 12:12:11
5

ssh-keygen -f "/root/.ssh/known_hosts" -R 192.168.1.123

Это должно заменить существующие ключи в known_hosts.old и создать новый. Это решение работало для меня в том же сценарии

ответил JackR 14 Maypm15 2015, 21:16:42
4

Запрос появляется каждый раз, потому что IP-адреса все время меняются при использовании динамической адресации. Попробуйте использовать статический IP-адрес, поэтому вам нужно только добавить ключ только один раз.

ответил Gaurav Joseph 16 Jpm1000000pmThu, 16 Jan 2014 13:06:57 +040014 2014, 13:06:57
2

Вы используете одного и того же пользователя для подключения?

Если вы вошли в локальный ПК, например, пользователь Джон и подключились к серверу B , как пользователь Adolf @ B , и все в порядке , это не значит, что все нормально, если вы зарегистрированы на локальном ПК, как пользователь Jane и подключаетесь к серверу B , как пользователь Adolf @ B .

Если вы хотите войти на сервер B в качестве пользователя Beda с ПК A без пароля, попробуйте эту команду, все с ПК A :

  ssh-keygen -t rsa
 

Эта команда генерирует ключ и сохраняет ключ в файле. Пожалуйста, оставьте парольную фразу пустой.

  ssh Beda @ B mkdir -p .ssh
 

Эта команда создает каталог, если они еще не существуют. В противном случае не печатайте сообщение об ошибке.

  cd ~ /.ssh
 

Эта команда изменяет каталог на домашний каталог пользователей ./ssh.

  cat id_rsa.pub | ssh Beda @ B 'cat>> .ssh /authorized_keys'
 

Эта команда печатает файл id_rsa.pub (ваш открытый ключ) в authorized_keys на сервере.

ВАЖНО: Beda - это ваше имя пользователя на сервере, который вы подключаете, B - ваш IP-адрес сервера.

Теперь вы можете подключиться к серверу B без пароля или парольной фразы:

  ssh Beda @ B
 
ответил Petr Derian 21 +04002014-10-21T13:17:22+04:00312014bEurope/MoscowTue, 21 Oct 2014 13:17:22 +0400 2014, 13:17:22
1

Тема здесь может помочь.

По сути, вы хотите удалить ключи RSA и ECDSA для этого хоста, затем используйте ssh-keyscan , чтобы поместить их обратно в ваш файл known_hosts таким образом, чтобы не вызовет этого конфликта. Это работало для меня, когда у меня была такая же проблема.

ответил Paul A Jungwirth 20 ThuEurope/Moscow2012-12-20T20:47:41+04:00Europe/Moscow12bEurope/MoscowThu, 20 Dec 2012 20:47:41 +0400 2012, 20:47:41
1

Вопрос: Что вызывает это, ...?

Таким образом, изменился ключ хоста ssh-сервера. Что вызвало изменение? Трудно сказать. Вот несколько догадок:

  • Удалось ли sshd на myserver использовать ключи ECDSA, поэтому это новый тип ключа?
  • Был ли недавно обновлен myserver?
  • Был ли sshd на myserver недавно повторно заблокирован, поэтому был создан новый ключ хоста ssh?
  • Кто-нибудь заново сгенерировал или заменил ключ хоста sshd?
  • Изменен ли IP-адрес myserver, чтобы другой хост отвечал на этот IP-адрес?

Вопрос: ... и как его исправить?

Как уже сообщали другие, удалите кешированный ключ ECDSA для myserver, который был заблокирован вашей учетной записью.

ответил Lars Nordin 7 PM00000070000004131 2012, 19:42:41
1

Эта ошибка продолжала раздражать меня в течение длительного времени. По какой-то причине это имело значение, если бы я сделал

  ssh host
 

или

  ssh host.domain
 

https://askubuntu.com/questions/87449 /как к Disable-строгий хозяин-ключ проверка-в-SSH

затем указал мне на возможность изменения файла конфигурации. Посмотрите мой сценарий https://askubuntu.com/a/949731/129227 для автоматизации процесса.

ответил Wolfgang Fahl 25 PM00000030000002631 2017, 15:43:26
0

Я исправил это на Chromebook, удалив и переустановив Secure Shell ... Он работал как шарм.

ответил msersen 19 Mayam15 2015, 02:26:58
0

Вот как удалить известный отпечаток хоста (из файла known_hosts ) в ОС Chrome:

Найти индекс записи оскорбительного хоста на выходе ssh при сбое соединения. Например, в строке ниже индекс нарушения 7 :

  Оскорбление ключа ECDSA в /.ssh/known_hosts:7
 

Откройте консоль JavaScript ( CTRL + Shift + J )) окна Secure Shell и введите следующее, заменив INDEX с соответствующим значением (например, 7 ):

  term_.command.removeKnownHostByIndex (ИНДЕКС);
 

Это решение было заимствовано из Блог Льва Гаггля .

ответил Alex Yursha 24 J000000Monday17 2017, 10:55:39
0

Я добавил следующие строки в свой файл ~ /.ssh /config, тем самым отключив строгую проверку хоста для всех локальных адресов. (с распределением адресов DHCP, IP-адреса моих локальных машин всегда меняются)

  host * .local
    StrictHostKeyChecking no
 

Вы все еще получаете предупреждение, хотя, это хорошо для меня.

ответил KimSJ 15 MarpmThu, 15 Mar 2018 15:23:28 +03002018-03-15T15:23:28+03:0003 2018, 15:23:28

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132