Я пытаюсь подключиться к удаленному Git-репозиторию, который находится на моем веб-сервере, и клонировать его на мою машину.
Я использую следующий формат для моей команды:
git clone ssh://username@domain.com/repository.git
Это хорошо сработало для большинства членов моей команды. Обычно после выполнения этой команды Git запрашивает пароль пользователя, а затем запускает клонирование. Однако при работе на одном из моих компьютеров я получаю следующую ошибку:
Проверка ключа хоста не удалась.
Неустранимый: Не удалось прочитать из удаленного хранилища.
Мы не используем ключи SSH для подключения к этому хранилищу, поэтому я не уверен, почему Git проверяет его на этой конкретной машине.
ssh://
Ответы:
Вы подключаетесь по протоколу SSH, как указано
ssh://
префиксом в вашем URL-адресе клона. Используя SSH, у каждого хоста есть ключ. Клиенты запоминают ключ хоста, связанный с конкретным адресом, и отказываются подключаться, если ключ хоста меняется. Это мешает человеку в середине атаки.Ключ хоста для domain.com изменился. Если вам это не кажется странным , удалите старый ключ из локального кэша, отредактировав его,
${HOME}/.ssh/known_hosts
чтобы удалить строку для domain.com, или разрешив утилите SSH сделать это за вас с помощьюОтсюда запишите обновленный ключ, либо сделав его самостоятельно с
или, что то же самое, пусть
ssh
сделает это за вас в следующий раз , когда вы соединиться сgit fetch
,git pull
илиgit push
(или даже простой ПР»ssh domain.com
), отвечая да , когда будет предложеноПричиной этого запроса является то, что domain.com больше не находится в вашем
known_hosts
после удаления и, вероятно, не в системе/etc/ssh/ssh_known_hosts
, поэтомуssh
не может узнать, действительно ли хост на другом конце соединения является domain.com. (Если введен неправильный ключ/etc
, кто-то с правами администратора должен будет обновить общесистемный файл.)Я настоятельно рекомендую вам также рассмотреть возможность аутентификации пользователей с помощью ключей. Таким образом,
ssh-agent
можно хранить материал ключа для удобства (вместо того, чтобы каждый должен был вводить свой пароль для каждого соединения с сервером), и пароли не передаются по сети.источник
sudo ssh-keygen -R domain.com
может переименовать существующийknown_hosts
файлknown_hosts.old
и создать копию , доступную только для root . (-rw------- root root
) Вы можете легкоchown
вернуться к соответствующему пользователю, но вы также можете потратить время на отладку, почему git не работает. : DAre you sure you want to continue connecting (yes/no)?
, Не делай ту же ошибку, что и я. Вам нужно ввестиyes
. Простое нажатие Enter не выбирает да по умолчаниюКак я уже говорил ранее, в Cloning git repo возникает ошибка - проверка ключа хоста не удалась. Неустранимый: удаленный конец неожиданно завис , добавьте GitHub в список авторизованных хостов:
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
источник
У меня была похожая проблема, но с использованием ключей SSH. Из ответа Тупи выше я выяснил, что проблема в том, что файл known_hosts отсутствует или github.com отсутствует в списке известных хостов. Вот шаги, которые я следовал, чтобы решить это -
mkdir -p ~/.ssh
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
ssh-keygen -t rsa -C "user.email"
$ cat ~/.ssh/id_rsa.pub
и скопируйте его.источник
touch
не будет выполнена, если~/.ssh
каталог не существует, поэтому шаг 1 все еще требуется. Также вам не нуженtouch
файл перед использованием>>
перенаправления. Он будет создан при необходимости (но только файл, а не весь путь, поэтому все ещеmkdir -p
требуется).-p
Вариант сделать его работу в случае , если каталог уже существует.ssh-keyscan
, которого не хватает в документации Github при добавлении нового ключа ssh.Dockerfile
отсутствием разрешения. Добавление второго шага решило эту проблему! Спасибо за отличную работуЭто происходит из-за того, что github в настоящее время отсутствует в ваших известных хостах.
Вам будет предложено добавить github к вашим известным хостам. Если этого не произошло, вы можете запустить,
ssh -T git@github.com
чтобы получить приглашение снова.источник
Мне просто нужно было набрать «да» в ответ на вопрос «Вы уверены, что хотите продолжить соединение (да / нет)?» вместо того, чтобы просто нажать Enter.
источник
У меня возникла та же проблема на недавно установленной системе, но это была проблема udev. Там не было
/dev/tty
узла, поэтому мне пришлось сделать:источник
Если вы находитесь в офисной интрасети (в противном случае опасной), которая всегда защищена брандмауэрами, просто добавьте следующие строки в ~ / .ssh / config
Host *
StrictHostKeyChecking no
UserKnownHostsFile = / dev / null
источник
Что мне помогло, так это сначала добавить мой SSH-ключ нового компьютера, я следовал этим инструкциям GitLab - добавить SSH-ключ . Обратите внимание, что, поскольку я нахожусь на Win10, мне пришлось выполнять все эти команды в Git Bash на Windows (это не работало в обычной командной оболочке DOS cmd).
Затем, снова в Git Bash, мне пришлось сделать
git clone
репо, с которым у меня были проблемы, и в моем случае мне пришлось клонировать его под другим именем, так как я уже имел его локально и не хотел терять свои коммиты. НапримерЗатем я получил приглашение добавить его в список известных хостов, вопрос может быть таким:
Я набрал «да», и это, наконец, сработало, как правило, вы должны получить сообщение, подобное этому:
Примечание : если вы работаете в Windows, убедитесь, что вы используете Git Bash для всех команд, это не работало в обычной оболочке cmd или powershell, мне действительно пришлось сделать это в Git Bash.
Наконец, я удалил второе репозиторий клонов (
myRepo2
в примере) и вернулся к своему первому репо, и я наконец-то смог сделать все вещи Git как обычно в моем любимом редакторе VSCode.источник
Если вы используете git для Windows.
Клиент GUI добавляет ключ для вас
~/.ssh/known_hosts
. Это легче запомнить, если вы не делаете это часто, а также избегаете необходимости использовать командную строку git (стандартные командные строки Windows не имеютssh-keyscan
исполняемого файла).источник
Когда удаленный сервер хочет подключиться к частному репо, он аутентифицируется через ssh. Создайте пару секретный-открытый ключ с помощью ssh-keygen или, если у вас уже есть открытый-закрытый ключ. Скопируйте и вставьте открытый ключ в Настройки частного репо.
YourPrivateRepo -> Настройки -> Развернуть ключи -> Добавить ключ развертывания -> Вставить открытый ключ.
Теперь удаленный сервер сможет подключаться к частному репо.
ПРИМЕЧАНИЕ. Ключи развертывания имеют доступ только для чтения репозитория. Необходимо явно разрешить доступ для записи.
источник
Это означает, что ваш ключ удаленного хоста был изменен (может быть смена пароля хоста),
Ваш терминал предложил выполнить эту команду от имени пользователя root
Вы должны удалить это имя хоста из списка хостов на вашем ПК / сервере. Скопируйте предложенную команду и выполните от имени пользователя root.
Попробуйте еще раз, надеюсь, это работает.
источник
Когда спросили:
Are you sure you want to continue connecting (yes/no)?
Введите yes в качестве ответа
Так я решил свою проблему. Но если вы попытаетесь просто нажать кнопку ввода, это не сработает!
источник
Вы можете использовать свой «git url» в формате URL «https» в Jenkinsfile или где угодно.
git url: 'https://github.com/jglick/simple-maven-project-with-tests.git'
источник
Я столкнулся с той же ошибкой внутри DockerFile во время сборки, когда изображение было общедоступным. Я сделал небольшую модификацию в Dockerfile.
источник
У меня была похожая проблема, к сожалению, я использовал HMI GitExtensions и забыл, что написал фразу-пароль. С HMI .... забудь об этом! Не вводите фразу-пароль при генерации ключа!
источник
Я получил это сообщение, когда попытался сделать
git clone
репо, которое не было моим. Исправление было в том, чтобы раскошелиться, а затем клонироватьисточник