У меня есть несколько облачных коробок, которые часто меняют свои IP.
Я использую имя хоста ssh, но мне приходится каждый раз редактировать файл known_hosts при запуске сервера из-за этого сообщения об ошибке:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is…
Помимо каких-либо угроз безопасности, связанных с тем, что я хочу сделать, есть ли способ либо игнорировать эту ошибку, либо автоматически перезаписать файл known_hosts, чтобы мне не всегда приходилось редактировать его самостоятельно?
ssh
bash
known-hosts
fingerprint
coneybeare
источник
источник
Дополнение: вы можете попробовать отключить только проверку CheckHostIP для этого имени:
источник
Многие ответы здесь будут работать - но технически они обходные пути. OpenSSH уже имеет встроенную функцию с этим в виду:
HostKeyAlias
.В вашем файле .ssh / config добавьте
HostKeyAlias <alias>
в конфигурацию хоста:При этом подключение к серверу
myserver.example.com
не будет использовать имя хоста или IP-адрес для локальной ссылки - оно всегда будет использовать только указанный HostKeyAlias при подключении к этому серверу. Для меня имеет смысл использовать имя хоста - но вы, конечно, можете использовать любой псевдоним, который вам нравится.Типичные для меня конфиги для динамических хостов таковы:
Это также может быть использовано в некоторых непонятных сценариях, когда вы знаете, что у множества ваших серверов одинаковые ключи хоста (обычно это должно не иметь место). Это тогда предотвратит повторяющиеся записи. В будущем, если ключи законно меняются, вам не нужно заменять / удалять несколько записей. Единственный. Серверы Gitlab Geo являются хорошим примером этого.
Что касается очистки файла known_hosts, я бы посоветовал рассмотреть другие вопросы / ответы, конкретно относящиеся к ведению / удалению устаревших записей known_hosts. Например, см. Как управлять моим файлом .ssh / known_hosts ; Я особенно впечатлен ответом пользователя 1953828, хотя я вижу, что у него не так много голосов (пока). :)
источник
Я использую эти хитрые варианты, чтобы обойти эту проблему. (Открытый ключ моего хоста регенерируется довольно часто., Так что это удаляет проверку IP и ключа)
Вы также можете просто использовать это, если Ключ остается тем же, но IP изменяется:
источник
Вы можете установить StrictHostKeyChecking = no в конфигурации клиента ssh (т. Е. Файл ~ / ssh / config на компьютере, к которому вы подключаетесь), чтобы игнорировать предупреждение.
источник
Вы можете положить
CheckHostIP no
в свой~/.ssh/config
файл, но это оставляет вас открытыми для подмены атак. Если вас это не беспокоит, тогда этот параметр должен отключитьknown_hosts
проверку.источник
Я избегаю добавления отпечатков пальцев в мой
known_hosts
файл при подключении к временным машинам AWS. Я использую такую команду какподключиться к ним. Он не спросит вас, хотите ли вы добавить машину «в список известных хостов». Замените
10.0.0.5
IP-адресом вашей машины иsecret.pem
полным путем вашего ключа Ssh. Вы по-прежнему будете получать предупреждения о том, что объект10.0.0.5
был добавлен, но он действительно исчез/dev/null
. Я делаю это достаточно часто, чтобы установить псевдоним в моем~/.profile
Я оставляю
ssh ec2-user@example.com
за собой команды типа для машин, где я проверял отпечатки пальцев.источник
Сделайте known_hosts только для чтения.
источник