Вопрос: Временно игнорировать файл `~ / .ssh / known_hosts`?


Есть ли способ временно игнорировать мои ~/.ssh/known_hostsфайл?

mbp:~ alexus$ ssh 10.52.11.171
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Please contact your system administrator.
Add correct host key in /Users/alexus/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/alexus/.ssh/known_hosts:155
RSA host key for 10.52.11.171 has changed and you have requested strict checking.
Host key verification failed.
mbp:~ alexus$ 

ЗАМЕТКА:

.. несколькими ответами / комментариями (комментариями) я понимаю, что мой вопрос немного вводит в заблуждение, поэтому он короткий ожидаемое поведение), так что это нормально (в моем случае) есть веская причина, по которой я хочу видеть «игнорировать»)


38
2017-12-07 20:06


Источник


Вы задаете неправильный вопрос. Вы не должны «игнорировать» проблему; вы должны выяснить, что происходит и решить. - Michael Hampton♦
Почему это ожидаемое поведение? - Thorbjørn Ravn Andersen
Я не могу говорить для пользователя, но одним примером может быть ситуация, когда вы разрабатываете процесс автоматической установки (например, kickstart), где ваш итеративный рабочий процесс включает в себя построение, подключение, тестирование, изменение процесса сборки и восстановление из царапины снова и снова. - Goladus
@MichaelHampton - я получаю это все время, так как VMware и VirtualBox перерабатывают IP-адреса для гостей. Для меня это правильный вопрос :) - jww
FWIW Я продолжаю искать этот ответ, потому что у меня есть система в моей локальной сети, где я использую dropbear (с другим ключом хоста) для ввода пароля шифрования диска во время запуска. - Zulan


Ответы:


Вы можете использовать ssh -o StrictHostKeyChecking=no отключить проверку known_hosts на мгновение. Но я бы советовал против этого. Вы действительно должны проверить, почему ключ хоста изменился.

Другой вариант - добавить определенную запись в свою ~/.ssh/config для хозяина, о котором идет речь. Это может быть допустимым подходом, если у вас есть определенный хост, который генерирует новые ключи хоста каждый раз, когда он перезагружается, и он перезагружается по уважительной причине несколько раз в день.

Host <your problematic host>
  StrictHostKeyChecking no

48
2017-12-07 20:08



это ожидаемое поведение), так что это нормально (в моем случае) - alexus
@alexus Если это «ожидается», вы можете применить этот параметр к определенному имени хоста / IP, для которого вы ожидаете, что это произойдет. - chrylis
@alexus И помните, что если вы это сделаете, вы в значительной степени потеряете всю защиту, которую предоставляет ssh. Вы также можете использовать telnet, так как было бы тривиально, если бы кто-то MITM вы и захватили весь ваш трафик. - Michael Hampton♦
Одиночная орфографическая ошибка: совет является существительным; вам нужна форма глагола, консультировать, - TRiG
Это больше не работает (по крайней мере, для OpenSSH_5.3p1) - draeath


Чтобы полностью игнорировать файл известных хостов в среде POSIX, установите GlobalKnownHostsFile а также UserKnownHostsFile варианты /dev/null:

ssh -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null user@host

Настройка StrictHostKeyChecking=no опция позволит вам подключиться, но SSH покажет предупреждение:

ssh -o StrictHostKeyChecking=no user@host

Как отмечали другие, вероятно, лучше решить основной вопрос. Вы могли бы рассмотреть Аутентификация сертификата SSH например, для проверки хостов.


25
2018-04-14 20:07



Это может быть лучший ответ, чем в настоящее время самый высокий приоритет потому что он позволяет использовать аутентификацию по паролю, которая была бы отключена в противном случае (конечно, вы должны понимать, что именно вы делаете, прежде чем вводить пароль) ... - VZ.


Если вы переустановили сервер и, следовательно, Идентификация изменилась, вы должны просто удалить указанную строку 155 из /Users/alexus/.ssh/known_hosts и идти вперед.

Если вы переключаетесь между разными частными сетями, вместо этого вы должны использовать имена хостов, поскольку клиент ssh также сохранит ключи в зависимости от имени хоста. Добавьте что-то подобное вашему /etc/hosts:

10.52.11.171 server1
10.52.11.171 server2

а затем использовать ssh server1 при подключении к подсети 1 и ssh server2 при подключении к подсети2. Таким образом, оба сервера могут иметь разные ключи хоста.


4
2017-12-07 22:33



Что делать, если вы переключаетесь между двумя частными сетями и подключаетесь к двум одинаковым IP-адресам? - alexus
Я отредактировал свой ответ. - etagenklo
@alexus Тогда вам нужен IPv6 :) Но это было бы полезной информацией в вашем исходном вопросе. - Michael Hampton♦


-o StrictHostKeyChecking=no работает только в том случае, если хост еще не присутствует в файле known_hosts.

Я думаю, что он чище (никаких предупреждений), если вы ожидаете, что ключ хоста изменится, возможно, из-за клонирования vm, чтобы обеспечить игнорирование таких типов хостов, как это:

# Handle possible SSH key changes
host_key=$(ssh-keyscan -t rsa ${host_ip})
grep "${host_key}" ~/.ssh/known_hosts >/dev/null || {
    ssh-keygen -R ${host_ip}
    echo ${host_key} >>  ~/.ssh/known_hosts
}

# connect as normal way
ssh root@${host_ip} "hostname"

1
2017-10-23 15:57





Некоторые люди говорят, что это неправильно, вы не делаете этого и так далее, но мне нужно это также для проверки нескольких встроенных устройств снова и снова. Вам необходимо отключить StrictHostKeyChecking=no, это правильно, но также сбросить известный файл hosts /dev/null, Здесь пример с автологином и ps на удаленном устройстве.

sshpass -p pass ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host 'ps ax'

0
2018-06-28 07:27





Войдите в систему на всех своих серверах (и если RedHat) rm -f /etc/ssh/ssh_host_* а затем перезапустить SSHD.

Это создаст новые ключи хоста SSH, которые не нужно игнорировать.

Я могу думать только об одном экземпляре, где ключи SSH, клонированные на нескольких серверах, не только желательны, но и не вызывают никаких предупреждений. Умножает одну запись A. Все хосты с записью A имеют одинаковый ключ.


-2
2018-04-14 21:15



Этот ответ неверен. Отпечаток пальца локальный на клиенте. - 89c3b1b8-b1ae-11e6-b842-48d705