Итак, на днях зашли на учетную запись GitLab для хранения и отслеживания всех настроек.
Мы создали новый репозиторий в веб-интерфейсе GitLab и начали загружать каталог, который был в нашей персональной системе.
Все было хорошо, пока мы не попытались отправить код в удаленный репозиторий на GitHub. Это дало нам фатальную ошибку: “Authentical failed for xyz repository”.
Вот как выглядела ошибка:
destroyer@andreyex:~/Documents/Local-Code$ git push -u origin master Username for 'https://gitlab.com': gitlab_profile_username gitlab_profile_username@gitlab.com': remote: HTTP Basic: Access denied fatal: Authentication failed for 'https://gitlab.com/gitlab_account_username/gitlab_repository/'
Если вы столкнулись с подобной проблемой, позвольте мне показать вам, как исправить эту ошибку.
Основная строка, которая дает некоторое представление о первопричине этой ошибки:
remote: HTTP Basic: Access denied
Почему мы это говорим? Потому что ваш репозиторий GitLab использует HTTPS. Ожидается, что между вашей системой и вашим хранилищем будет защищенное соединение.
Теперь, не должно ли это быть автоматически, используя HTTPS? Нет! Уже нет.
GitLab изменил свою политику, и теперь он ожидает, что вы будете использовать свой собственный ключ SSH для аутентификации в своем хранилище GitLab.
Другими словами, чтобы отправить код из локальной системы в удаленный репозиторий GitLab, вы должны создать пару ключей SSH и добавить открытый ключ в свой профиль GitLab .
Мы используем Linux, поэтому лучше всего выполнить шаги в Linux. Если вы используете Windows или macOS, вы должны найти как сделать то же самое в вашей операционной системе.
Сначала проверьте, если у вас уже есть ключи SSH:
ls ~/.ssh/id_rsa.pub
Если у вас его нет, создайте его, используя следующий раздел, иначе перейдите к разделу после этого.
Мы используем Ubuntu, поэтому шаги для Ubuntu. Если вы используете другие дистрибутивы, шаги могут отличаться или не отличаться.
Откройте терминал и используйте следующую команду:
ssh-keygen
Вы должны увидеть результат вроде этого:
Generating public/private rsa key pair. Enter file in which to save the key (/user_home/.ssh/id_rsa):
Нажмите клавишу ввода и перейдите с выбором по умолчанию. Вас могут попросить ввести пароль для защиты вашего ключа SSH. Если вы устанавливаете пароль, вам придется вводить его каждый раз, когда вы пытаетесь установить SSH-соединение, используя сгенерированный SSH-ключ. Вы можете или не можете установить пароль для ключа SSH.
Если вы создали ключ SSH на своем персональном компьютере, вы должны найти его в каталоге .ssh вашего домашнего каталога в большинстве дистрибутивов Linux. Отобразите его содержимое с помощью этой команды:
cat ~/.ssh/id_rsa.pub
Скопируйте содержимое вашего открытого ключа. Теперь войдите в свою учетную запись GitLab, перейдите в «Настройки пользователя» и найдите ключи SSH на левой боковой панели. Кроме того, вы можете просто перейти на эту страницу при входе в систему.
Вы увидите поле для добавления открытого ключа. Просто вставьте ключ сюда. Дайте ему название, чтобы легко распознать, какому компьютеру принадлежит этот ключ. Если вы не сделали что-то самостоятельно, у ключей SSH нет срока действия по умолчанию. Так что оставьте поле истечения нетронутым.
Сделано со всем? Нажмите кнопку «Добавить ключ».
Вы можете добавить более одного ключа SSH. Это нормально, если у вас более одного компьютера.
Итак, вы добавили свой SSH-ключ в свой профиль GitLab. Теперь все должно быть хорошо. Время проверить это.
Попробуйте нажать свой код еще раз. Посмотри, работает ли это. Обычно вы должны видеть вывод, как этот, если он успешен:
destroyer@andreyex:~/Documents/Local-Code$ git push -u origin master Username for 'https://gitlab.com': gitlab_account_username Password for 'https://gitlab_account_username@gitlab.com': Enumerating objects: 127, done. Counting objects: 100% (127/127), done. Delta compression using up to 4 threads Compressing objects: 100% (122/122), done. Writing objects: 100% (127/127), 401.30 KiB | 6.37 MiB/s, done. Total 127 (delta 14), reused 0 (delta 0) remote: Resolving deltas: 100% (14/14), done. To https://gitlab.com/gitlab_account_username/gitlab_repository.git * [new branch] master -> master Branch 'master' set up to track remote branch 'master' from 'origin'.
Это нелегко.
GitLab имеет два имени пользователя: имя пользователя профиля и имя пользователя учетной записи.
Вы можете легко изменить имя пользователя профиля без каких-либо последствий. Но изменение имени пользователя аккаунта может привести к катастрофическим последствиям.
Имя пользователя учетной записи – это то, что вы увидите в URL вашего репозитория GitLab:
https://gitlab.com/gitlab_account_username/repository_name
При создании нового репозитория GitLab со своего веб-сайта GitLab предложила использовать имя пользователя профиля в настройках Git config на персональном компьютере.
Мы сделали это и попытались использовать одно и то же имя пользователя профиля, передавая код в хранилище. Неудивительно, что это было отклонено даже после добавления ключа SSH:
destroyer@andreyex:~/Documents/Local-Code$ git push -u origin master Username for 'https://gitlab.com': gitlab_profile_username Password for 'https://gitlab_profile_username@gitlab.com': remote: HTTP Basic: Access denied fatal: Authentication failed for 'https://gitlab.com/gitlab_account_username/gitlab_repository.git/'
Итак, хитрость заключается в том, чтобы использовать здесь имя пользователя учетной записи GitLab. Когда мы это сделали, передача в удаленный репозиторий GitLab прошла успешно.
Мы надеемся, что это помогло вам с ошибкой «fatal: Authentication fail».
Это сработало для вас? Дайте нам знать с да или нет в разделе комментариев.
не помогло(
А как быть если тоже самое происходит во время выполнения задания в gitlab runner ?