it-roy-ru.com

Ошибка Git: "Ошибка проверки ключа хоста" при подключении к удаленному репозиторию

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

Я использую следующий формат для моей команды:

git clone ssh://[email protected]/repository.git

Это хорошо сработало для большинства членов моей команды. Обычно после выполнения этой команды Git запрашивает пароль пользователя, а затем запускает клонирование. Однако при работе на одном из моих компьютеров я получаю следующую ошибку:

Проверка ключа хоста не удалась. 

неустранимый: Не удалось прочитать с пульта репозиторий.

Мы не используем ключи SSH для подключения к этому хранилищу, поэтому я не уверен, почему Git проверяет его на этой конкретной машине.

121
bootsz

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

Ключ хоста для domain.com изменился. Если вам это не кажется подозрительным , вы можете удалить старый ключ из локального кэша, используя

$ ssh-keygen -R domain.com

Я настоятельно рекомендую вам также рассмотреть возможность аутентификации пользователей с помощью ключей. Таким образом, ssh-agent может хранить материал ключа для удобства (вместо того, чтобы вводить свой пароль для каждого соединения с сервером), и пароли не передаются по сети.

76
Greg Bacon

Как я уже ответил ранее в Клонирование git-репозитория вызывает ошибку - Ошибка проверки ключа хоста. Неустранимый: удаленный конец неожиданно зависает , добавьте GitHub в список авторизованных хостов:

ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts

227
Tupy

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

  1. mkdir -p ~/.ssh
  2. ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts 
  3. ssh-keygen -t rsa -C "user.email" 
  4. Добавьте ключ id_rsa.pub в список ключей SSH в вашем профиле GitHub. 
32
Saran

Это происходит из-за того, что github в настоящее время отсутствует в ваших известных хостах.

Вам будет предложено добавить github к вашим известным хостам. Если этого не произошло, вы можете запустить ssh -T [email protected], чтобы снова получить приглашение.

17
Powderham

Для меня, я просто должен был набрать «да» в приглашении, которое спрашивает: «Вы уверены, что хотите продолжить подключение (да/нет)?» вместо того, чтобы просто нажать Enter.

9
Code-Apprentice

У меня возникла та же проблема с недавно установленной системой, но это была проблема udev. Узла /dev/tty не было, поэтому мне пришлось сделать:

mknod -m 666 /dev/tty c 5 0
7
Geoffroy

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

Хост *
StrictHostKeyChecking нет 
UserKnownHostsFile =/DEV/нуль 

5
sunil

Что мне помогло, так это сначала добавить мой SSH-ключ нового компьютера, я следовал этим инструкциям из GitLab - добавить SSH-ключ . Обратите внимание, что, поскольку я нахожусь на Win10, мне пришлось выполнять все эти команды в Git Bash на Windows (это не работало в обычной командной оболочке DOS cmd).

Затем, снова в Git Bash, я должен был сделать git clone репо, с которым у меня были проблемы, и в моем случае мне пришлось клонировать его под другим именем, так как я уже имел его локально и не хотел терять свои коммиты. Например 

git clone ssh://[email protected]/myRepo.git myRepo2

Затем я получил приглашение добавить его в список известных хостов, вопрос может быть таким:

Вы уверены, что хотите продолжить подключение (да/нет)?

Я набрал «да», и это, наконец, сработало, как правило, вы должны получить сообщение, подобное этому:

Предупреждение. Постоянно добавлено «[ваша ссылка репо]» (ECDSA) в список известных хостов.

Note: если вы работаете в Windows, убедитесь, что вы используете Git Bash для всех команд, это не работает в обычной командной оболочке cmd или powershell, мне действительно пришлось сделать это в Git Bash. 

Наконец, я удалил второе репозиторий-клон (myRepo2 в примере) и вернулся к своему первому репо, и я наконец-то смог сделать все Git как обычно в моем любимом редакторе VSCode. 

4
ghiscoding

Если вы используете Git для Windows.

  • Откройте git GUI.
  • Откройте локальный репозиторий git в git GUI.
  • Добавьте пульт или нажмите, если пульт уже существует.
  • Ответьте «да» на вопрос о том, хотите ли вы продолжить.

Клиент GUI добавляет ключ для вас в ~/.ssh/known_hosts. Это легче запомнить, если вы не делаете это часто, а также избегаете необходимости использовать командную строку git (стандартные командные строки Windows не имеют исполняемого файла ssh-keyscan).

2
Julian Knight

Когда спросили:

Are you sure you want to continue connecting (yes/no)?

Тип да в качестве ответа

Так я решил свою проблему. Но если вы попытаетесь просто нажать кнопку ввода, это не сработает!

2
shutsuke

Это означает, что ваш удаленный ключ хоста был изменен (возможно, смена пароля хоста),

Ваш терминал предложил выполнить эту команду от имени пользователя root

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]

Вы должны удалить это имя хоста из списка хостов на вашем ПК/сервере. Скопируйте предложенную команду и выполните от имени пользователя root.

$ Sudo su                                                        // Login as a root user

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]    // Terminal suggested command execute here
Host [www.website.net]:4231 found: line 16 type ECDSA
/root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old

$ exit                                                           // Exist from root user

Попробуйте еще раз, надеюсь, это работает.

1
Jay Patel

У меня была похожая проблема, к сожалению, я использовал HMI GitExtensions и забыл, что я написал фразу-пароль .. С HMI .... забудь об этом! Не вводите фразу-пароль при генерации ключа!

0
Jerome Vacher

Я столкнулся с той же ошибкой внутри DockerFile во время сборки, когда изображение было общедоступным. Я сделал небольшую модификацию в Dockerfile.

 RUN git clone  https://github.com/kacole2/express-node-mongo-skeleton.git /www/nodejs

Это может быть связано с тем, что использование синтаксиса [email protected]: ... заканчивается использованием> SSH для клонирования, а внутри контейнера ваш закрытый ключ недоступен. Вы хотите использовать вместо этого RUN git clone> https://github.com/edenhill/librdkafka.git .

0
Adiii

Вы можете использовать свой «git url» в формате URL «https» в Jenkinsfile или где угодно.

git url: 'https://github.com/jglick/simple-maven-project-with-tests.git'

0
Nitin