GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Behebung von HTTP Basic:Zugriff verweigert und schwerwiegender Authentifizierungsfehler mit GitLab

Also habe ich neulich daran gedacht, mein längst vergessenes GitLab-Konto zum Speichern und Verfolgen aller Anpassungen zu verwenden, die ich an der Website des Linux-Handbuchs vornehme.

Ich habe ein neues Repository auf der GitLab-Weboberfläche erstellt und das Verzeichnis, das ich hatte, auf mein persönliches System übertragen.

Alles war in Ordnung, bis ich versuchte, den Code in das Remote-Repository auf GitHub zu pushen. Es gab mir einen schwerwiegenden Fehler mit der Aufschrift „Authentical failed for xyz repository“.

So sah der Fehler aus:

[email protected]:~/Documents/Local-Code$ git push -u origin master
Username for 'https://gitlab.com': gitlab_profile_username
[email protected]': 
remote: HTTP Basic: Access denied
fatal: Authentication failed for 'https://gitlab.com/gitlab_account_username/gitlab_repository/'

Wenn Sie mit einem ähnlichen Problem konfrontiert sind, lassen Sie mich Ihnen zeigen, wie Sie diesen Fehler beheben können.

Handling "remote:HTTP Basic:Access denied" error with GitLab

Die Hauptzeile, die einen Hinweis auf die Grundursache dieses Fehlers gibt, ist diese:

remote: HTTP Basic: Access denied

Warum sage ich das? Weil Ihr GitLab-Repository HTTPS verwendet. Es erwartet eine sichere Verbindung zwischen Ihrem System und Ihrem Repository.

Sollte es jetzt nicht automatisch HTTPS verwenden? Nein! Nicht mehr.

GitLab hat seine Richtlinie geändert und erwartet nun, dass Sie Ihren eigenen SSH-Schlüssel verwenden, um sich bei Ihrem GitLab-Repository zu authentifizieren.

Mit anderen Worten, um einen Code von Ihrem lokalen System in Ihr entferntes GitLab-Repository zu übertragen, müssen Sie ein SSH-Schlüsselpaar erstellen und den öffentlichen Schlüssel zu Ihrem GitLab-Profil hinzufügen .

Ich verwende Linux, daher werden die Schritte am besten unter Linux befolgt. Wenn Sie Windows oder macOS verwenden, sollten Sie einen Hinweis beachten und prüfen, wie Sie dasselbe auf Ihrem Betriebssystem tun können.

Überprüfen Sie zuerst, ob Sie bereits SSH-Schlüssel haben:

ls ~/.ssh/id_rsa.pub

Wenn Sie es nicht haben, erstellen Sie es mit dem nächsten Abschnitt, sonst springen Sie zum Abschnitt nach diesem.

Erstellen von SSH-Schlüsseln (falls Sie sie noch nicht haben)

Ich verwende Ubuntu, also gelten die Schritte für Ubuntu. Wenn Sie andere Distributionen verwenden, können die Schritte anders sein oder auch nicht.

Öffnen Sie ein Terminal und verwenden Sie den folgenden Befehl:

ssh-keygen

Sie sollten eine Ausgabe wie diese sehen:

Generating public/private rsa key pair.
Enter file in which to save the key (/user_home/.ssh/id_rsa):

Drücken Sie die Eingabetaste und fahren Sie mit der Standardauswahl fort. Möglicherweise werden Sie aufgefordert, ein Passwort einzugeben, um Ihren SSH-Schlüssel zu sichern. Wenn Sie ein Passwort festlegen, müssen Sie es jedes Mal eingeben, wenn Sie versuchen, eine SSH-Verbindung mit dem generierten SSH-Schlüssel herzustellen. Sie können ein Passwort für den SSH-Schlüssel festlegen oder nicht.

Öffentlichen SSH-Schlüssel zu GitLab hinzufügen

Wenn Sie einen SSH-Schlüssel auf Ihrem PC erstellt haben, sollten Sie ihn in den meisten Linux-Distributionen im Verzeichnis .ssh unter Ihrem Home-Verzeichnis finden. Zeigen Sie seinen Inhalt mit diesem Befehl an:

cat ~/.ssh/id_rsa.pub

Kopieren Sie den Inhalt Ihres öffentlichen Schlüssels. Melden Sie sich nun bei Ihrem GitLab-Konto an, gehen Sie zu Benutzereinstellungen und suchen Sie in der linken Seitenleiste nach SSH-Schlüsseln. Alternativ können Sie diese Seite auch einfach aufrufen, wenn Sie angemeldet sind.

Sie sehen ein Feld zum Hinzufügen des öffentlichen Schlüssels. Fügen Sie einfach den Schlüssel hier ein. Geben Sie ihm einen Titel, um leicht zu erkennen, zu welchem ​​Computer dieser Schlüssel gehört. Sofern Sie nicht selbst etwas unternommen haben, haben SSH-Schlüssel standardmäßig kein Ablaufdatum. Lassen Sie also das Ablauffeld unberührt.

Fertig mit allem? Klicken Sie auf die Schaltfläche Schlüssel hinzufügen.

Sie können mehr als einen SSH-Schlüssel hinzufügen. Das ist normal, wenn Sie mehr als einen Computer haben.

Prüfen Sie, ob Sie den Code jetzt an GitLab pushen können

Sie haben also Ihren SSH-Schlüssel zu Ihrem GitLab-Profil hinzugefügt. Die Dinge sollten jetzt gut sein. Zeit, es zu überprüfen.

Versuchen Sie erneut, Ihren Code zu drücken. Sehen Sie, ob es funktioniert. Normalerweise sollten Sie bei Erfolg eine Ausgabe wie diese sehen:

[email protected]:~/Documents/Local-Code$ git push -u origin master
Username for 'https://gitlab.com': gitlab_account_username
Password for 'https://[email protected]': 
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'.

Siehst du den Fehler immer noch? Beachten Sie den Unterschied zwischen dem Benutzernamen des GitLab-Profils und dem Benutzernamen des Kontos!

Ich habe es auf die harte Tour gelernt.

GitLab hat zwei Benutzernamen:Profilbenutzername und Kontobenutzername.

Sie können den Benutzernamen des Profils einfach und ohne Konsequenzen ändern. Das Ändern des Benutzernamens des Kontos kann jedoch katastrophal sein.

Der Benutzername des Kontos wird in der URL Ihres GitLab-Repositorys angezeigt:

https://gitlab.com/gitlab_account_username/repository_name

Beim Erstellen eines neuen GitLab-Repositorys von seiner Website schlug GitLab vor, den Profilbenutzernamen in den Git-Konfigurationseinstellungen auf dem PC zu verwenden.

Ich habe das getan und versucht, denselben Profilbenutzernamen zu verwenden, während ich den Code in das Repository geschoben habe. Es überrascht nicht, dass es auch nach dem Hinzufügen des SSH-Schlüssels verweigert wurde:

[email protected]:~/Documents/Local-Code$ git push -u origin master
Username for 'https://gitlab.com': gitlab_profile_username
Password for 'https://[email protected]': 
remote: HTTP Basic: Access denied
fatal: Authentication failed for 'https://gitlab.com/gitlab_account_username/gitlab_repository.git/'

Der Trick besteht also darin, hier den Benutzernamen des GitLab-Kontos zu verwenden. Als ich das tat, war der Push zum entfernten GitLab-Repository erfolgreich.

Hat es bei dir funktioniert?

Nun, ich habe meine Tortur mit dem Pushen von Code in das GitLab-Repository geteilt. Ich hoffe, das hat Ihnen auch bei dem Fehler „Schwerwiegend:Authentifizierung fehlgeschlagen“ geholfen.

Hat es bei dir funktioniert? Lassen Sie es mich mit Ja oder Nein im Kommentarbereich wissen.


Linux
  1. So generieren Sie ein SSH-Schlüsselpaar (mit Beispielen)

  2. So konfigurieren Sie die SSH-Schlüssel-basierte Authentifizierung in Linux

  3. SSH – Generieren und Arbeiten mit SSH-Schlüsseln

  4. So verbinden Sie sich mit plink und cmd und öffentlichem Schlüssel mit dem SSH-Server

  5. Erste Schritte mit SSH unter Linux

So verwenden Sie die Public-Key-Authentifizierung mit SSH

Einfache HTTP-Authentifizierung mit Nginx

So sichern Sie ONLYOFFICE mit Lets Encrypt und Zwei-Faktor-Authentifizierung

Ansible SSH-Authentifizierung und Rechteausweitung

Beheben des Fehlers „Broken Pipe“ mit SSH-Verbindung

Melden Sie sich unter Linux und macOS mit einem privaten SSH-Schlüssel an