Каждый раз, когда я использую git для взаимодействия с удаленным, например, при нажатии или нажатии, отображается следующее сообщение:
Предупреждение: Постоянно добавляется "..." (RSA) в список известных хостов.
Как я могу предотвратить отображение этого раздражающего сообщения? Это всего лишь раздражение - все работает правильно.
Решение: создайте файл ~/.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.
~/.ssh/id_rsa
) ключ для подключения к серверу. Как упомянул @JeremiahGowdy, у меня есть debug3: load_hostkeys: loading entries for host "172.16.3.101" from file "/dev/null"
. Почему SSH начинает использовать /dev/null
качестве known_hosts после того, как я изменил ключ?
Добавьте в свой конфигурационный файл 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
Установите LogLevel
в ERROR
(not QUIET
) в файле ~/.ssh/config
, чтобы избежать этих ошибок:
Host *
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
LogLevel ERROR
Чтобы подавить предупреждающие сообщения для ssh
, вы можете добавить следующие строки в ~/.ssh/config
:
Host *
LogLevel error
Это отключит предупреждения, но не сообщения об ошибках. Как и другие настройки в ~/.ssh/config
, вы можете настроить LogLevel
на основе каждого узла, если хотите более мелкомасштабный элемент управления.
Это сообщение от SSH, которое предупреждает вас о том, что вы подключаетесь к хосту, с которым вы никогда не подключались. Я бы не рекомендовал отключать его, так как это может означать, что вы можете пропустить предупреждение об изменении ключа хоста, что может указывать на атаку MITM на ваш сеанс SSH.
~/.ssh/known_hosts
и посмотрите, есть ли там ваш хост.
В основном это означает, что для ключа для этого хоста ~/.ssh/known_hosts
есть изменения, и он автоматически не ОБНОВЛЯЕТ его. Поэтому каждый раз, когда вы получаете это предупреждение,
Это часто происходит при подключении к повторно созданным виртуальным машинам, которые меняют ключ с тем же IP-адресом
Решение
Если у вас есть только одна запись, вы можете удалить файл ~/.ssh/known_hosts
и после первого подключения, что ключ будет там, и после этого никаких предупреждающих сообщений.
Если у вас несколько записей, вы можете использовать команду ниже, чтобы удалить
$ ssh-keygen -R <hostname>
Это отлично работает для меня
Я столкнулся с той же ошибкой в 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, что должно сработать.
Добавить ключ 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
Затем добавьте паб-ключ и клонируйте свой репозиторий... Готово.....
Я попал в ту же проблему, когда начал использовать машину 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-агент/
У меня такой же вопрос, и я обнаружил, что в ~
нет файла .ssh
. Поэтому я просто создаю каталог .ssh
в пути ~
, и проблема была решена.
Если вы используете репозиторий из GitHub, подумайте о том, чтобы использовать версию HTTPS URL-адреса, чтобы полностью обойти эту проблему:
Если вы клонируете свой репозиторий из приложения Windows GitHub, это то, что он использует для удаленного URL. Может быть, они знают то, чего мы не знаем.
Я снимаю свое решение из-за продолжающихся downvotes.
Это было лучшее решение без фактического взлома исходного кода самого клиента SSH.
Если кто-то заинтересован, проверьте историю изменений.
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
?