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

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

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

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

Ответ 1

Решение: создайте файл ~/.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.

Ответ 2

Добавьте в свой конфигурационный файл 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

Ответ 3

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

Host *
   StrictHostKeyChecking no
   UserKnownHostsFile /dev/null
   LogLevel ERROR

Ответ 4

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

Ответ 5

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

Host *
LogLevel error

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

Ответ 6

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

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

Решение

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

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

$ ssh-keygen -R <hostname>

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

Ответ 7

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

Click the HTTP button and clone that URL instead

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

Ответ 8

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

Ответ 9

Я попал в ту же проблему, когда начал использовать машину 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-агент/

Ответ 10

Добавить ключ 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

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

Ответ 11

Я столкнулся с той же ошибкой в 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, что должно сработать.

Ответ 12

В моем случае это произошло потому, что администратор, настроивший сервер, установил эти параметры в ~/.ssh/config

StrictHostKeyChecking no
UserKnownHostsFile /dev/null

Который отлично работал в большинстве случаев, не используя файл ~/.ssh/known_hosts. Но для корпоративного репозитория gitlab каждый раз он выдавал "Предупреждение: постоянно добавлен... в список известных хостов".

Мое решение состояло в том, чтобы закомментировать UserKnownHostsFile/dev/null, которая позволяла создать ~/.ssh/known_hosts. Тогда он не дал больше предупреждений после этого.

Вы также можете иметь старые/недействительные записи в ваших known_hosts.

# find entry in ~/.ssh/known_hosts
ssh-keygen -F <hostname>

# delete entry in ~/.ssh/known_hosts
ssh-keygen -R <hostname>

Ответ 13

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