Принудительно ssh не печатать предупреждение «Удаленная идентификация хоста изменилась»

23

Есть ли способ, чтобы избежать печати предупреждающих сообщений SSH, как это?

"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r",
"@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @\r",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r",

Хотя идентификация удаленного хоста изменилась, но я знаю, что все в порядке, и просто хочу избавиться от этого предупреждения.

coffeMug
источник

Ответы:

16

Четыре способа:

Чтобы просто один раз подключиться к системе с новым ключом хоста, без необходимости отвечать на вопросы, подключитесь с помощью следующей опции:

ssh -q -o "StrictHostKeyChecking no" this.one.host.name

Чтобы окончательно удалить предупреждение для всех систем, отредактируйте ~/.ssh/configфайл, добавив следующие строки:

Host *
StrictHostKeyChecking no

Чтобы окончательно удалить все предупреждения для этого одного сервера, отредактируйте ~/.ssh/configфайл и добавьте следующие строки:

Host this.one.hostname
StrictHostKeyChecking no  

Чтобы удалить предупреждение для этого одного изменения для этого одного сервера, удалите ключ хоста для этого сервера ~/.ssh/known_hosts. При следующем подключении будет добавлен новый ключ хоста.

Дженни Д
источник
Во втором варианте эта конфигурация должна выполняться на стороне сервера, к которой мы подключаемся, верно?
coffeMug
Нет, $HOME/.ssh/configво втором и третьем вариантах важна ваша собственная .
Дженни Д
Это все еще печатает предупреждение для меня (хотя это разрешает соединение).
Майкл Миор
24

Добавьте это в ваш ~ / .ssh / config:

Host 10.*                            # use your own pattern here, eg. *.example.com, example.*.com
  StrictHostKeyChecking   no         # turn off the HostKey check                                                               
  LogLevel                ERROR      # keep it from printing to STDOUT
  UserKnownHostsFile      /dev/null  # (optional) add the host automatically to a black hole, otherwise it would be added to ~/.ssh/known_hosts and show you a warning/message at the top of your session. You may want it added to known_hosts if your shell uses `ssh` autocompletion, such as fish. 
Элайджа Линн
источник
3
MOD UP - единственный, который на самом деле ответил на вопрос - это был единственный ответ не только на работу, но и на подавление предупреждений.
Брэд
К сожалению, пользователи fish shell не смогут использовать красивое автозаполнение ssh для ранее подключенных хостов, если они установят UserKnownHostFile в / dev / null. Пользователи рыбы и, возможно, все не должны устанавливать это.
Элайджа Линн
Вам лучше создать ssh0скрипт / псевдоним / функцию ssh -o UserKnowHostsFile=/dev/null -o LogLevel=ERRORи использовать его явно, а не сбрасывать эти параметры в ~/.ssh/config. Вы можете забыть о них, а затем удивиться, почему проверки не сработали, когда вы просто хотели, чтобы они работали.
Дядя Билли
20

Вы можете убрать строку для этого хоста ~/.ssh/known_host(у каждого хоста есть строка как запись там).

Альтернативой является использование:

ssh -q -o "StrictHostKeyChecking no" ....

Просто использование -qбыло бы sshмолча потерпеть неудачу.

Timo
источник
9

Иногда нежелательно добавлять ключи хоста в $ HOME / .ssh / known_hosts по умолчанию.

Используйте -o UserKnownHostsFile=/dev/nullв дополнение к -qи, -o StrictHostKeyChecking=noчтобы не допустить загромождения в виде известных_хостов. Вот пример:

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -q user@scripts.local
Умный парень
источник
2

Альтернативное предложение - определить, почему ключ хоста меняется, и заставить его прекратить это делать.

Например: если вы строите хосты в контейнерах или с помощью системы инициализации, убедитесь, что они последовательно используют один и тот же известный ключ хоста для каждого экземпляра.

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

В противном случае, я проголосую за StrictHostKeyChecking No в вашем только ~/.ssh/config для конкретного хоста.

Доктор Эдвард Морбиус
источник