Назад | Перейти на главную страницу

Временно игнорировать мой файл `~ / .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$ 

НОТА:

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

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

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

Host <your problematic host>
  StrictHostKeyChecking no

Чтобы полностью игнорировать ваш файл известных хостов в среде 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 для проверки хостов, например.

Если вы переустановили сервер и поэтому идентификация изменилась, вам следует просто удалить указанную строку 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. Таким образом, оба сервера могут иметь разные ключи хоста.

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

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

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

Я думаю, что это чище (без предупреждений), если вы ожидаете, что ключ 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"

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

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

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