Git говорит: «Предупреждение: навсегда добавлен в список известных хостов»

162

Каждый раз, когда я использую git для взаимодействия с удаленным, например, при нажатии или нажатии, отображается следующее сообщение:

Предупреждение: Постоянно добавляется "..." (RSA) в список известных хостов.

Как я могу предотвратить отображение этого раздражающего сообщения? Это всего лишь раздражение - все работает правильно.

  • 1
    Вы действительно имеете в виду каждый раз? Дает ли вам подсказку в форме The authenticity of host '...' can't be established. RSA key fingerprint is .... Are you sure you want to continue connecting (yes/no)? или ты это подавил? Если это так, каждый раз один и тот же отпечаток? Если это не так, это действительно страшно . Менее страшным вариантом будет то, что каким-то образом ему не удастся записать файл hosts, поэтому он пытается снова каждый раз. Посмотрите на ~/.ssh/known_hosts ?
  • 1
    Да. <Я> Каждый </ I> раз. Однако я не вижу сообщения «Вы уверены ...» - возможно, я его подавил.
Показать ещё 11 комментариев
Теги:
terminal
ssh
command-line

12 ответов

217
Лучший ответ

Решение: создайте файл ~/.ssh/config и вставьте строку:

UserKnownHostsFile ~/.ssh/known_hosts

Затем вы увидите сообщение при следующем доступе к Github, но после этого вы больше не увидите его, потому что хост добавлен в файл known_hosts. Это устраняет проблему, а не просто скрывает сообщение журнала.

Эта проблема довольно долго меня раздражала. Проблема возникает из-за того, что клиент OpenSSH, скомпилированный для Windows, не проверяет файл known_hosts в ~/.ssh/known_hosts

ssh -vvvvvvvvvvvvvvvvvvv [email protected]

debug3: check_host_in_hostfile: filename /dev/null
debug3: check_host_in_hostfile: filename /etc/ssh/ssh_known_hosts
debug3: check_host_in_hostfile: filename /dev/null
debug3: check_host_in_hostfile: filename /etc/ssh/ssh_known_hosts
Warning: Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts.
  • 8
    Да, я не считаю подавление предупреждений или ошибок правильным решением проблемы. ;)
  • 1
    недавно я столкнулся с той же проблемой на моей машине с Ubuntu. Он начал вести себя таким образом после того, как я использовал другой (от моего по умолчанию ~/.ssh/id_rsa ) ключ для подключения к серверу. Как упомянул @JeremiahGowdy, у меня есть debug3: load_hostkeys: loading entries for host "172.16.3.101" from file "/dev/null" . Почему SSH начинает использовать /dev/null качестве known_hosts после того, как я изменил ключ?
Показать ещё 5 комментариев
87

Добавьте в свой конфигурационный файл ssh следующую строку: $HOME/.ssh/config):

LogLevel=quiet

При запуске ssh из командной строки добавьте в командную строку следующий параметр:

-o LogLevel=quiet

Например, следующее выдает версию gcc, установленную на machine.example.org(и без предупреждения):

ssh -o UserKnownHostsFile=/dev/null \
    -o StrictHostKeyChecking=no \
    -o LogLevel=quiet \
    -i identity_file \
    machine.example.org \
    gcc -dumpversion
  • 1
    Добавление "LogLevel = quiet" в файл "config" сработало. Спасибо.
  • 3
    Для обеспечения безопасности было бы хорошо поместить «LogLevel = quiet» в раздел «Host».
Показать ещё 3 комментария
52

Установите LogLevel в ERROR (not QUIET) в файле ~/.ssh/config, чтобы избежать этих ошибок:

Host *
   StrictHostKeyChecking no
   UserKnownHostsFile /dev/null
   LogLevel ERROR
  • 2
    Это работает лучше всего в моем случае - или вы можете указать «-oLogLevel = ERROR» в командной строке
  • 0
    Мне нравится это решение: простое и полностью работоспособное
3

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

Host *
LogLevel error

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

3

Это сообщение от SSH, которое предупреждает вас о том, что вы подключаетесь к хосту, с которым вы никогда не подключались. Я бы не рекомендовал отключать его, так как это может означать, что вы можете пропустить предупреждение об изменении ключа хоста, что может указывать на атаку MITM на ваш сеанс SSH.

  • 0
    Но я подключаюсь к этому 10-15 раз каждый день, и все же я получаю это предупреждение.
  • 0
    @JackB. Посмотрите ~/.ssh/known_hosts и посмотрите, есть ли там ваш хост.
Показать ещё 3 комментария
2

В основном это означает, что для ключа для этого хоста ~/.ssh/known_hosts есть изменения, и он автоматически не ОБНОВЛЯЕТ его. Поэтому каждый раз, когда вы получаете это предупреждение,

Это часто происходит при подключении к повторно созданным виртуальным машинам, которые меняют ключ с тем же IP-адресом

Решение

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

Если у вас несколько записей, вы можете использовать команду ниже, чтобы удалить

$ ssh-keygen -R <hostname>

Это отлично работает для меня

0

Я столкнулся с той же ошибкой в Linux/Cent OS VM, и это было из-за того, что IP-адрес менялся после перезапуска. Чтобы обойти эту проблему, я определил статический IP-адрес в сети и добавил эту запись в файл /etc/hosts. Для статического IP упомяните немного более высокое значение диапазона. Например, если ваш текущий IP (ipconfig/ifconfig) равен 192.168.0.102, в следующий раз после перезапуска это может стать 192.168.0.103. Поэтому определите свой статический IP-адрес в настройках IPV4 как 192.168.0.181, что должно сработать.

  • 0
    постарайтесь выделить ключевые слова и четко определиться с форматом, который поможет донести ваш ответ до других
0

Добавить ключ ssh

ssh-keygen -t rsa -b 4096 -C "[email protected]"

eval "$(ssh-agent -s)"

ssh-add ~/.ssh/bitbucket_rsa

файл конфигурации ящика

crate ~/.ssh/config

добавьте строку ниже.

UserKnownHostsFile ~/.ssh/known_hosts

Затем добавьте паб-ключ и клонируйте свой репозиторий... Готово.....

0

Я попал в ту же проблему, когда начал использовать машину Windows. В моем случае это было потому, что моя настройка SSH не была выполнена. Github имеет очень точную документацию по настройке SSH. Как только это позаботится, проблема была решена.

https://help.github.com/articles/checking-for-existing-ssh-keys/ https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it- к-SSH-агент/

0

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

0

Если вы используете репозиторий из GitHub, подумайте о том, чтобы использовать версию HTTPS URL-адреса, чтобы полностью обойти эту проблему:

Изображение 7196

Если вы клонируете свой репозиторий из приложения Windows GitHub, это то, что он использует для удаленного URL. Может быть, они знают то, чего мы не знаем.

  • 0
    Примечание. Если вы используете аутентификацию с закрытым ключом, вы не можете использовать HTTP (S).
-2

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

  • 6
    плохая идея, поток ошибок теперь загрязняет стандартный вывод.
  • 0
    Перенаправление - единственный способ работы без взлома SSH

Ещё вопросы

Сообщество Overcoder
Наверх
Меню