ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Исправление ошибки “HTTP Basic: Access Denied” и “Fatal Authentication Failure” с помощью GitLab

Как установить GitLab на Debian 9

Итак, на днях зашли на учетную запись 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/'

 

Если вы столкнулись с подобной проблемой, позвольте мне показать вам, как исправить эту ошибку.

 

Обработка “удаленного: HTTP Basic: доступ запрещен” Ошибка с GitLab

Основная строка, которая дает некоторое представление о первопричине этой ошибки:

remote: HTTP Basic: Access denied

 

Почему мы это говорим? Потому что ваш репозиторий GitLab использует HTTPS. Ожидается, что между вашей системой и вашим хранилищем будет защищенное соединение.

Теперь, не должно ли это быть автоматически, используя HTTPS? Нет! Уже нет.

GitLab изменил свою политику, и теперь он ожидает, что вы будете использовать свой собственный ключ SSH для аутентификации в своем хранилище GitLab.

Другими словами, чтобы отправить код из локальной системы в удаленный репозиторий GitLab, вы должны создать пару ключей SSH и добавить открытый ключ в свой профиль GitLab .

Мы используем Linux, поэтому лучше всего выполнить шаги в Linux. Если вы используете Windows или macOS, вы должны найти как сделать то же самое в вашей операционной системе.

Сначала проверьте, если у вас уже есть ключи SSH:

ls ~/.ssh/id_rsa.pub

 

Если у вас его нет, создайте его, используя следующий раздел, иначе перейдите к разделу после этого.

 

Создание ключей SSH (если у вас его еще нет)

Мы используем 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 в GitLab

Если вы создали ключ SSH на своем персональном компьютере, вы должны найти его в каталоге .ssh вашего домашнего каталога в большинстве дистрибутивов Linux. Отобразите его содержимое с помощью этой команды:

cat ~/.ssh/id_rsa.pub

 

Скопируйте содержимое вашего открытого ключа. Теперь войдите в свою учетную запись GitLab, перейдите в «Настройки пользователя» и найдите ключи SSH на левой боковой панели. Кроме того, вы можете просто перейти на эту страницу при входе в систему.

Вы увидите поле для добавления открытого ключа. Просто вставьте ключ сюда. Дайте ему название, чтобы легко распознать, какому компьютеру принадлежит этот ключ. Если вы не сделали что-то самостоятельно, у ключей SSH нет срока действия по умолчанию. Так что оставьте поле истечения нетронутым.

Сделано со всем? Нажмите кнопку «Добавить ключ».

Вы можете добавить более одного ключа SSH. Это нормально, если у вас более одного компьютера.

 

Проверьте, можете ли вы отправить код в GitLab сейчас

Итак, вы добавили свой 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 и именем пользователя учетной записи!

Это нелегко.

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».

Это сработало для вас? Дайте нам знать с да или нет в разделе комментариев.

Exit mobile version