Как исправить Git, используя неправильный ключ SSH и учетную запись – CloudSavvy IT
При подключении к удаленному серверу Git, например Github, ваш клиент должен пройти аутентификацию с использованием токенов на основе HTTPS или SSH. Если вы используете последний, у вас могут возникнуть проблемы с обработкой ключей, в том числе с Git, использующим неправильный ключ SSH и подписывающим вас в другую учетную запись.
В чем проблема?
Если у вас вообще нет SSH-ключа в вашей учетной записи, вы почти наверняка получите следующую ошибку при попытке нажать:
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)
В разрешении отказано (публичный ключ). фатальный: не удалось прочитать из удаленного репозитория.
Это, вероятно, самая распространенная ошибка Git, и решение ее простое – настроить SSH-ключ для своей учетной записи.
Но вы также можете столкнуться с очень похожим сообщением об ошибке даже после правильной настройки ключа SSH. Если вы используете несколько учетных записей Git, у вас может быть такая ошибка:
Разрешение на имя пользователя / Repository.git отклонено для другого аккаунта. фатальный: не удалось прочитать из удаленного репозитория.
В этом случае Github принял ваш SSH-ключ, но он по-прежнему работает некорректно; даже если ваше локальное репозиторий git настроено на использование правильного адреса электронной почты, если вы дадите ему неправильный ключ, он аутентифицирует вас как неправильного пользователя. Это принципиально отличается от первой ошибки. Это не «в разрешении отказано», а «в разрешении отказано в учетной записи».
Это может быть проблемой, если у вас несколько учетных записей и вам нужно использовать отдельные ключи для каждой из них. Из-за того, как работает аутентификация SSH, он по-прежнему будет «входить в систему» на удаленном сервере Git, но как неправильный пользователь. Когда Github проверяет, есть ли у этого пользователя доступ к репозиторию, он, скорее всего, выйдет из строя, что приведет к ошибке, что ваша учетная запись не имеет разрешения на использование вашего собственного репозитория.
Решение состоит в том, чтобы правильно управлять несколькими ключами SSH, чтобы ваш git-клиент не отправлял неправильный ключ на сервер. Вы можете сделать это, отредактировав файлы конфигурации SSH.
Убедитесь, что Git настроен правильно
Прежде всего, вам нужно убедиться, что ваше репо настроено для использования правильного адреса электронной почты и имени пользователя. Вы можете проверить это в конфигурации Git:
git config –list
И установите имя и адрес электронной почты для этого репо (или используя –global, чтобы установить его для всех репозиториев):
git config user.name “Имя” git config user.email “email@gmail.com”
Если у вас нет проблем с ключом SSH, это может быть все, что требуется.
Редактирование ~ / .ssh / config
Если у вас нет существующего ключа, который вы бы хотели использовать, вам нужно будет сгенерировать новый файл ключа для своей учетной записи. Если вы это сделаете, вам нужно будет переместить или переименовать нужный файл в ~ / .ssh, чтобы он не конфликтовал с вашим id_rsa по умолчанию. В этом случае мы создадим новый ключ с именем «github»:
ssh-keygen -t rsa -f ~ / .ssh / github
Чтобы использовать несколько ключей SSH, вам нужно будет отредактировать ~ / .ssh / config и настроить новый блок Host для Github, который указывает на только что созданный ключевой файл. SSH будет использовать это, чтобы выбрать ключ SSH, который он будет использовать.
Главное имя хоста Имя хоста github.com IdentityFile ~ / .ssh / github IdentitiesOnly yes Хост старое имя хоста github.com IdentityFile ~ / .ssh / id_rsa IdentitiesOnly yes
Если у вас есть только один блок хоста для нового ключа, вам не нужно ничего делать, и вы сможете подключиться к Github прямо сейчас. Если у вас есть несколько блоков для разных ключей, вам нужно отредактировать удаленный репозиторий, чтобы github.com был заменен именем блока хоста в файле конфигурации SSH. Это позволит выбрать ключ вручную, а не полагаться на конфликтующий поиск.
git удаленное удаление источника git удаленное добавление источника git @ main: имя пользователя / репозиторий.git
Исправление проблем
После настройки конфигурации хоста SSH и настройки пультов Git должен использовать правильный ключ SSH при нажатии. Если у вас все еще есть проблемы, вы можете отладить проблему, вручную установив команду SSH, которую Git использует для сеанса оболочки, используя переменную среды GIT_SSH_COMMAND.
GIT_SSH_COMMAND = ‘ssh -i ~ / .ssh / github -o UserKnownHostsFile = / dev / null -o StrictHostKeyChecking = no’
Вы также захотите проверить и убедиться, что Git использует ключ из ожидаемого места. В Windows это расположение может сильно различаться в зависимости от того, через какое программное обеспечение вы используете Git. Например, при использовании графического интерфейса клиента Fork по умолчанию использовался агент Windows SSH, но я настроил новый ключ SSH, который он использовал вместо этого.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)