Alors, l'autre jour, j'ai pensé à utiliser mon compte GitLab oublié depuis longtemps pour stocker et suivre toutes les personnalisations que j'apporte au site Web du manuel Linux.
J'ai créé un nouveau référentiel sur l'interface Web de GitLab et j'ai continué à pousser le répertoire que j'avais sur mon système personnel.
Tout allait bien jusqu'à ce que j'essaie de pousser le code vers le référentiel distant sur GitHub. Cela m'a donné une erreur fatale disant "Authentical failed for xyz repository".
Voici à quoi ressemblait l'erreur :
[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/'
Si vous rencontrez un problème similaire, laissez-moi vous montrer comment corriger cette erreur.
Gestion de l'erreur "distant :HTTP Basic :accès refusé" avec GitLab
La ligne principale qui donne un indice sur la cause première de cette erreur est celle-ci :
remote: HTTP Basic: Access denied
Pourquoi est-ce que je dis ça ? Parce que votre référentiel GitLab utilise HTTPS. Il s'attend à avoir une connexion sécurisée entre votre système et votre référentiel.
Maintenant, ne devrait-il pas automatiquement utiliser HTTPS ? Non! Plus maintenant.
GitLab a changé sa politique et il s'attend maintenant à ce que vous utilisiez votre propre clé SSH pour vous authentifier auprès de votre référentiel GitLab.
En d'autres termes, pour pousser un code de votre système local vers votre référentiel GitLab distant, vous devez créer une paire de clés SSH et ajouter la clé publique à votre profil GitLab .
J'utilise Linux, il est donc préférable de suivre les étapes sous Linux. Si vous utilisez Windows ou macOS, vous devriez suivre un indice et vérifier comment faire de même sur votre système d'exploitation.
Vérifiez d'abord si vous avez déjà des clés SSH :
ls ~/.ssh/id_rsa.pub
Si vous ne l'avez pas, créez-le en utilisant la section suivante, sinon passez à la section après celle-ci.
Création de clés SSH (si vous ne l'avez pas déjà)
J'utilise Ubuntu donc les étapes sont pour Ubuntu. Si vous utilisez d'autres distributions, les étapes peuvent être différentes ou non.
Ouvrez un terminal et utilisez la commande suivante :
ssh-keygen
Vous devriez voir une sortie comme celle-ci :
Generating public/private rsa key pair.
Enter file in which to save the key (/user_home/.ssh/id_rsa):
Appuyez sur la touche Entrée et passez au choix par défaut. Il peut vous être demandé de saisir un mot de passe pour sécuriser votre clé SSH. Si vous définissez un mot de passe, vous devrez le saisir à chaque fois que vous essayez d'établir une connexion SSH à l'aide de la clé SSH générée. Vous pouvez ou non définir un mot de passe pour la clé SSH.
Ajout d'une clé SSH publique à GitLab
Si vous avez créé une clé SSH sur votre ordinateur personnel, vous devriez la trouver dans le répertoire .ssh sous votre répertoire personnel dans la plupart des distributions Linux. Affichez son contenu avec cette commande :
cat ~/.ssh/id_rsa.pub
Copiez le contenu de votre clé publique. Connectez-vous maintenant à votre compte GitLab, accédez à Paramètres utilisateur et recherchez les clés SSH dans la barre latérale gauche. Alternativement, vous pouvez simplement accéder à cette page lorsque vous êtes connecté.
Vous verrez un champ pour ajouter la clé publique. Collez simplement la clé ici. Donnez-lui un titre pour reconnaître facilement à quel ordinateur appartient cette clé. À moins que vous n'ayez fait quelque chose par vous-même, les clés SSH n'ont pas de date d'expiration par défaut. Alors laissez le champ d'expiration intact.
Vous avez tout fini ? Appuyez sur le bouton Ajouter une clé.
Vous pouvez ajouter plusieurs clés SSH. C'est normal si vous avez plus d'un ordinateur.
Vérifiez si vous pouvez pousser le code vers GitLab maintenant
Donc, vous avez ajouté votre clé SSH à votre profil GitLab. Les choses devraient être bonnes maintenant. Il est temps de le vérifier.
Essayez de pousser votre code à nouveau. Voyez si cela fonctionne. Normalement, vous devriez voir une sortie comme celle-ci si elle réussit :
[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'.
Vous voyez toujours l'erreur ? Faites attention à la différence entre le nom d'utilisateur du profil GitLab et le nom d'utilisateur du compte !
Je l'ai appris à mes dépens.
GitLab a deux noms d'utilisateur :le nom d'utilisateur du profil et le nom d'utilisateur du compte.
Vous pouvez facilement changer le nom d'utilisateur du profil sans aucune conséquence. Mais changer le nom d'utilisateur du compte peut être catastrophique.
Le nom d'utilisateur du compte est ce que vous verrez dans l'URL de votre dépôt GitLab :
https://gitlab.com/gitlab_account_username/repository_name
Lors de la création d'un nouveau référentiel GitLab à partir de son site Web, GitLab a suggéré d'utiliser le nom d'utilisateur du profil dans les paramètres de configuration Git sur l'ordinateur personnel.
Je l'ai fait et j'ai essayé d'utiliser le même nom d'utilisateur de profil tout en poussant le code vers le référentiel. Sans surprise, il a été refusé même après l'ajout de la clé SSH :
[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/'
Donc, l'astuce consiste à utiliser le nom d'utilisateur du compte GitLab ici. Lorsque j'ai fait cela, le push vers le référentiel GitLab distant a réussi.
Cela a-t-il fonctionné pour vous ?
Eh bien, j'ai partagé mon épreuve en poussant du code vers le référentiel GitLab. J'espère que cela vous a également aidé avec l'erreur "fatale :échec de l'authentification".
Cela a-t-il fonctionné pour vous? Faites-le moi savoir avec un oui ou un non dans la section des commentaires.