Я пытаюсь настроить SSH без пароля на сервере Ubuntu ssh-copy-id myuser@myserver
, но получаю сообщение об ошибке:
Предупреждение: ключ хоста ECDSA для «myserver» отличается от ключа для IP-адреса «192.168.1.123»
Что вызывает это, и как я могу это исправить? Я попытался удалить .ssh
каталог на удаленном компьютере и запустить его ssh-keygen -R "myserver"
локально, но это не устраняет ошибку.
ssh
security
ubuntu-server
ssh-keys
Cerin
источник
источник
The ECDSA host key for server has changed
. Мой способ удалить соответствующую строку кэша о домене в~/.ssh/known_hosts
. Тогда SSH работает.Ответы:
Удалите кэшированный ключ для
192.168.1.123
на локальной машине:источник
ssh-keyscan -t ecdsa my.server.domain >> ~/.ssh/known_hosts
после этого вам не нужно проверять новый ключ при первом подключении к хосту.В моем случае
ssh-keygen -R ...
не исправить предупреждение. У меня была дополнительная информация, как это:Я просто вручную отредактировал
~/.ssh/known_hosts
и удалил строку 8 («оскорбляющий ключ»). Я попытался переподключиться, хозяин был постоянно добавлен, и все было хорошо после этого!источник
sed -e '8d' /home/myuser/.ssh/known_hosts
, заменив номер строки8
и имя файла теми, которые отображаются в вашей системе.known_hosts:8
ссылка ссылается на значение с нулевым индексом или нет. Хорошо знать, что это отображение 1: 1 ...ssh-keygen -R [hostname]:2022
~/.ssh/known_hosts
, я получаю сообщение о том, что подлинность не может быть установлена, и «Вы уверены, что хотите продолжить подключение». Ответ "да" пытается и не удается подключиться. Если я пытаюсь подключиться второй раз, я получаю ту же ошибку ключа хоста ECDSA, с которой я начал.Я много общаюсь между моими компьютерами в локальной сети и двумя учетными записями веб-хостинга, поэтому я разобрался со всеми видами шансов и заканчивается с помощью SSH, включая проблемы с аутентификацией,
ssh -v
чтобы узнать, где и что пошло не так.После того, как я решил эту проблему и не был доволен ответами, я хотел по-настоящему понять «почему» сам ...
Триггер для моего случая: установленная новая серверная ОС на работе и после установки пакета openssh-server на рабочем сервере был создан новый набор ключей хоста. Ранее все мои серверные ОС были Ubuntu, и на этот раз они поменялись на Debian (и я подозреваю, что в разрешениях есть нюансы).
Когда все операционные системы были Ubuntu, и я переустанавливаю серверную операционную систему, при первом подключении к ней SSH, я получаю такого рода предупреждение, которое я предпочитаю над тихим предупреждением выше!
Затем я открываю ~/.ssh/known_hostsна компьютере запуск ssh, удаляю эту строку, переподключаюсь, и это происходит:
Этот бит о: 11122 - номер порта, с которого я маршрутизирую SSH на брандмауэре
Я проверил резервные копии с бывшего сервера Ubuntu и сравнил мою новую установку Debian:
Так что да, вероятно, хост недавно начал использовать ключи ecdsa, которые, основываясь на изменениях в Ubuntu, я бы обвинял в обновлении. Отказ Ubuntu от надежной Linux-ОС, на которую я рассчитывал, объясняет, почему на этот раз я установил Debian.
Я прочитал security.SE q / a на ecdsa и уже удалил эту строку с
sshd_config
моего нового сервера Debian. (и побежалservice ssh restart
)источник
ubuntu debian server
и вы поймете, что я имею в виду.Запрос появляется каждый раз, потому что IP-адреса все время меняются при использовании динамической адресации. Попробуйте использовать статический IP-адрес, чтобы добавить ключ только один раз.
источник
ssh-keygen -f "/root/.ssh/known_hosts" -R 192.168.1.123
Это должно заменить существующие ключи в known_hosts.old и создать новый. Это решение работало для меня в том же сценарии
источник
Я добавил следующие строки в мой ~ / .ssh / config, таким образом отключив строгую проверку хоста для всех адресов .local. (с распределением адресов DHCP, IP-адреса моих локальных машин всегда меняются)
Вы все еще получаете предупреждение, хотя, это хорошо для меня.
источник
Вы используете тот же пользователь для подключения?
Если вы вошли на локальный ПК, например, пользователь John, и подключились к серверу B, например, как Adolf @ B, и все в порядке, это не значит, что все в порядке, если вы вошли на локальный ПК, например, пользователь Jane, и подключились к серверу. B , как пользователь Adolf @ B .
Если вы хотите войти на сервер B как пользователь Beda с ПК A без пароля, попробуйте эту команду, все с ПК A :
Эта команда генерирует ключ и сохраняет ключ в файле. Пожалуйста, оставьте парольную фразу пустой.
Эта команда создает каталог, если он еще не существует. В противном случае не печатайте сообщение об ошибке.
Эта команда изменяет каталог на домашний каталог вашего пользователя ./ssh.
Эта команда печатает файл id_rsa.pub (ваш открытый ключ) в авторизованные ключи на сервере.
ВАЖНО: Beda - это ваше имя пользователя на сервере, к которому вы подключаетесь, B - это IP-адрес вашего сервера.
Теперь вы можете подключиться к серверу B без пароля или пароля:
источник
Нить здесь может помочь.
По сути, вы хотите удалить оба ключа RSA и ECDSA для этого хоста, а затем использовать их,
ssh-keyscan
чтобы поместить их обратно в вашknown_hosts
файл таким образом, чтобы не вызвать этот конфликт. Это сработало для меня, когда у меня была такая же проблема.источник
Вопрос: что является причиной этого, ...?
Таким образом, ключ хоста сервера ssh изменился. Что вызвало изменение? Трудно сказать. Вот некоторые догадки:
Вопрос: ... и как мне это исправить?
Как уже отвечали другие, удалите кэшированный ключ хоста ECDSA для myserver, который кэшировал ваш аккаунт.
источник
Эта ошибка долго меня раздражала. По какой-то причине это имело значение, буду ли я делать
или же
https://askubuntu.com/questions/87449/how-to-disable-strict-host-key-checking-in-ssh
затем указал мне на возможность изменения файла конфигурации. Смотрите мой скрипт https://askubuntu.com/a/949731/129227 там для автоматизации процесса.
источник
CanonicalizeHostname
иCanonicalDomains
позволит избежать удалений строгой проверки и сделаю SSH рассмотреть хост и host.domain быть одинаковыми.Я исправил это на Chromebook, удалив и переустановив Secure Shell ... Это работало как прелесть.
источник
Вот как удалить известный отпечаток хоста (из
known_hosts
файла) в Chrome OS:Найдите индекс ошибочной записи хоста в выводе ssh при сбое соединения. Например, в строке ниже обидного индекса 7 :
Откройте консоль JavaScript ( CTRL+ Shift+ J) окна Secure Shell и введите следующее, заменив
INDEX
его соответствующим значением (например, 7 ):Это решение было заимствовано из блога Лео Гагля .
источник