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.