У меня есть сервер (допустим, его ip будет abcd), который позволяет пользователям входить через ssh. Теперь я хочу изменить физическую машину, оставив IP-адрес прежним. Так что новый компьютер все еще доступен для пользователя, подобного этому
$ ssh abcd
Проблема в том, что каждый раз, когда один пользователь пытается войти в систему, он получает следующую ошибку несоответствия ssh-ключа.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ @ ПРЕДУПРЕЖДЕНИЕ: ДИСТАНЦИОННАЯ ИДЕНТИФИКАЦИЯ ХОЗЯИНА ИЗМЕНИЛАСЬ! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ ВОЗМОЖНО, ЧТО-ТО ЧТО-ТО ДЕЛАЕТ! Кто-то может подслушивать вас прямо сейчас (атака «человек посередине»)! Также возможно, что ключ хоста RSA был только что изменен. Отпечаток ключа RSA, отправленный удаленным хостом, 02: DC: с6: 18: 1b: 34: b7: 1d: а: 90: AB: е1: 95: 48: 69: 84. Пожалуйста, обратитесь к системному администратору. Добавьте правильный ключ хоста в /home/user/.ssh/known_hosts, чтобы избавиться от этого сообщения. Оскорбительный ключ в /home/user/.ssh/known_hosts:37 Ключ хоста RSA для выпускников изменился, и вы запросили строгую проверку. Ошибка проверки ключа хоста.
Я знаю, что пользователь может удалить строку # 37 из файла ~ / .ssh / known_hosts, и в следующий раз он получит приглашение да / нет. Я хочу, чтобы пользователь не знал о замене всей машины и просто запрашивал пароль.
Как это сделать?
ssh
единственной защиты от атак посредников и может привести к тому, что вы отправите пароль прямо злоумышленнику, а не на предполагаемую машину? Если вы точно не знаете, что вы неуязвимы для активных атак (например, вы находитесь в той же защищенной внутренней сети, что и целевой компьютер), это разрушаетssh
модель безопасности.Ответы:
Как упомянул Ethabell , вы можете скопировать текущие ключи хоста на новый сервер.
Вы можете найти ключи своего хоста, открыв свой
sshd_config
файл (на моем Ubuntu 12.04 его/etc/ssh/sshd_config
). В конфигурационном файле ищитеHostKey
записи. Эти записи скажут вам, где находятся файлы ключей хоста. Вы должны быть в состоянии скопировать эти файлы на новый сервер и обновить новые серверы,sshd_config
чтобы они указывали на скопированные ключи (или просто перезаписывали файлы, которые уже существуют на новом сервере).Также обратите внимание на этот раздел со
sshd_config
страницы руководства, в частности, часть о разрешениях:источник
Если бы у вас был оригинальный ключ хоста, вы могли бы восстановить его, и это остановило бы ошибку.
Или вы можете отключить StrictHostKeyChecking в вашем конфигурационном файле sshd.
... Делать это, однако, ужасная, ужасная идея. Если у вас есть способ просто запустить
ssh-keygen -R server.example.com
на клиентских машинах, это будет наилучшим способом, потому что отключение проверки ключа хоста похоже на высказывание: «Эй. Нападите на меня». Когда все меняется, мне становится неясным, но безопасность должна быть приоритетом № 1, а не скрывать изменения.источник
Вы можете попробовать это так
Обратите внимание, что если папка .ssh еще не существует, приведенная выше команда не будет выполнена. Кроме того, может быть лучше при создании файла установить минимально возможное разрешение (в основном чтение-запись только для владельца). Вот более продвинутая команда:
Для получения дополнительной информации об этой проблеме вы должны перейти на этот сайт: SSH Host Key Change Error
источник