Tutoriel

Token GitHub et authentification Git : personal access token, Git Credential Manager, push sans mot de passe

Mis à jour: · Skillaria.Top

Depuis le 13 août 2021, GitHub n'accepte plus le mot de passe du compte pour les opérations Git via HTTPS. Il faut à la place un token GitHub (personal access token) ou une connexion via Git Credential Manager, qui ouvre le navigateur et enregistre lui-même les identifiants. Le token se crée dans Settings → Developer settings sur github.com, se saisit à la place du mot de passe lors d'un git push ou git clone, et credential.helper le mémorise.

Pourquoi Git n'accepte plus le mot de passe GitHub

Si, lors d'un git push, vous saisissez votre identifiant et votre mot de passe github.com et qu'on vous refuse l'accès, ce n'est pas une faute de frappe. Depuis le 13 août 2021, GitHub a désactivé la connexion par mot de passe pour les opérations Git en HTTPS. On utilise désormais un token GitHub (personal access token, PAT) ou une authentification via le navigateur, gérée par Git Credential Manager.

Le message d'erreur ressemble à ceci :

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/... for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/user/project.git/'

La raison est simple : le mot de passe du compte donne un accès complet à tout, on ne peut pas le limiter à un dépôt, et il est peu pratique à révoquer. Un token, en revanche, est créé pour une tâche précise, a une durée de vie et un ensemble de droits, et en cas de fuite on le supprime en une minute sans changer de mot de passe. GitLab et Bitbucket suivent la même voie, donc ce qui suit s'applique aussi à eux dans l'esprit.

Deux modes d'authentification : HTTPS et SSH

Git communique avec un dépôt distant selon l'un de deux protocoles, et cela détermine la façon de vous identifier.

ProtocoleAdresse du dépôtComment vous vous identifiez
HTTPShttps://github.com/user/project.gitToken ou Git Credential Manager (connexion dans le navigateur)
SSHgit@github.com:user/project.gitPaire de clés SSH : la clé privée chez vous, la clé publique dans les réglages GitHub

La clé SSH se configure une seule fois, et ensuite Git ne demande plus ni identifiant ni mot de passe. Sa création et son ajout sur GitHub sont détaillés dans l'article sur la configuration de Git ; ici, nous nous concentrons sur HTTPS, car c'est là que les débutants voient le plus souvent la demande de mot de passe. Pour savoir quel protocole utilise votre dépôt, lancez :

git remote -v
origin  https://github.com/user/project.git (fetch)
origin  https://github.com/user/project.git (push)

Comment créer un token GitHub (personal access token)

Un personal access token est une longue chaîne aléatoire que GitHub vous délivre à la place du mot de passe pour un accès programmatique. Les tokens classic commencent par ghp_, les fine-grained par github_pat_. Le token n'est affiché qu'une seule fois, juste après sa création : copiez-le dans votre gestionnaire de mots de passe.

Pas à pas

  1. Connectez-vous sur github.com, cliquez sur votre avatar en haut à droite et ouvrez Settings.
  2. En bas du menu de gauche, choisissez Developer settings, puis Personal access tokens.
  3. Choisissez le type : Fine-grained tokens (recommandé) ou Tokens (classic), puis cliquez sur le bouton de création d'un nouveau token.
  4. Donnez un nom parlant (par exemple « portable, travail »), une durée de validité et les droits nécessaires.
  5. Cliquez sur Generate et copiez immédiatement le token.

Fine-grained ou classic

Un token fine-grained est limité à des dépôts précis et à des droits individuels. Pour un travail courant sur le code, sélectionnez les dépôts voulus et, dans la section des droits par dépôt, accordez Contents: Read and write : cela suffit pour clone, pull et push. Si vous ne faites que lire un dépôt privé, le mode Read-only suffit.

Un token classic donne accès immédiatement à tous vos dépôts. Pour un push dans un dépôt, il faut la portée repo, et pour modifier des fichiers dans .github/workflows, la portée supplémentaire workflow. Le classic est plus simple, mais plus risqué : une fuite ouvre l'accès à tout le compte.

Durée de validité

GitHub propose plusieurs durées et permet de choisir une date d'expiration. On peut créer un token sans échéance, mais ce n'est pas recommandé : un token illimité oublié est une faille de sécurité classique. Il est raisonnable de fixer 30 à 90 jours et de le renouveler grâce au rappel que GitHub envoie par e-mail avant l'expiration.

Git push et git clone avec un token

Utiliser un token est plus simple qu'il n'y paraît : Git demande « Password », et vous y collez le token à la place du mot de passe.

$ git push origin main
Username for 'https://github.com': your-login
Password for 'https://your-login@github.com': <collez le token>

Dans le terminal, les caractères du mot de passe ne s'affichent pas : c'est normal. Collez le token puis appuyez sur Entrée. Dans Git Bash sous Windows, le collage fonctionne avec Maj+Inser ou le clic droit de la souris.

Git clone avec token

Un dépôt privé se clone de la même façon : git clone demande l'identifiant et le token. Si vous voulez éviter les questions (dans un script, par exemple), le token peut être intégré directement à l'adresse :

git clone https://your-login:<TOKEN>@github.com/user/project.git

Inconvénient : l'adresse avec le token est enregistrée dans .git/config et peut se retrouver dans l'historique du shell. Après le clonage, retirez le token de l'adresse :

git remote set-url origin https://github.com/user/project.git

Dans les systèmes d'intégration continue, le token se transmet par des variables d'environnement secrètes, jamais dans des fichiers. Dans GitHub Actions, le dépôt courant dispose déjà du GITHUB_TOKEN intégré ; un PAT séparé n'est souvent pas nécessaire.

GitLab : git clone avec token

Sur GitLab, le token se crée dans les paramètres du profil, section Access tokens ; pour travailler avec le code, il faut les portées read_repository et write_repository. Le principe est le même : l'identifiant GitLab sert de nom d'utilisateur, et le token de mot de passe.

git clone https://oauth2:<TOKEN>@gitlab.com/group/project.git

GitLab accepte le nom oauth2 pour n'importe quel token personnel ; vous pouvez aussi indiquer votre propre identifiant.

Git pull et fetch

Pour un dépôt public, git pull et git clone fonctionnent sans authentification. L'identifiant et le token ne sont demandés que pour un dépôt privé ou lors d'un git push. Si un pull sur un projet public demande soudain un mot de passe, l'adresse contient probablement une erreur : GitHub répond à un dépôt inexistant de la même manière qu'à un dépôt fermé.

Git Credential Manager : c'est quoi

Saisir le token à chaque push est fastidieux. Cette tâche revient à un credential helper, un programme auxiliaire que Git appelle lorsqu'il a besoin d'identifiants. Git lui transmet l'adresse du serveur, et il renvoie l'identifiant et le mot de passe (ou le token) depuis son stockage.

Git Credential Manager (GCM) est le plus pratique de ces assistants. C'est un programme multiplateforme de GitHub et Microsoft : lors du premier push, il ouvre une fenêtre de connexion ou le navigateur, vous vous identifiez sur GitHub (y compris avec l'authentification à deux facteurs), et GCM récupère le token lui-même et le range dans le coffre sécurisé du système. Il n'est alors pas nécessaire de créer un PAT à la main.

GCM prend en charge GitHub, GitLab, Bitbucket et Azure DevOps. Il est installé par défaut avec Git pour Windows : c'est le choix de credential helper proposé dans l'installeur.

Les différents credential.helper

ValeurOù elle est stockéeQuand l'utiliser
managerGit Credential Manager : Gestionnaire d'identifiants Windows, trousseau macOS, Secret Service sous LinuxOption recommandée sur un poste de travail
osxkeychainTrousseau macOSAssistant standard de Git sur Mac
cacheEn mémoire, 15 minutes par défautServeur Linux où l'on ne veut pas stocker le token sur le disque
storeEn clair dans ~/.git-credentialsUniquement sur des machines isolées ; le token est lisible par quiconque a accès au fichier

Configurer l'authentification Git sous Windows, macOS et Linux

Pour voir quel assistant est déjà configuré :

git config --show-origin --get-all credential.helper

Windows

Si vous avez gardé les réglages par défaut lors de l'installation de Git, GCM fonctionne déjà : au premier push depuis Git Bash, PowerShell ou VS Code, une fenêtre de connexion à GitHub s'ouvre. Si aucun assistant n'est configuré, activez-le manuellement :

git config --global credential.helper manager

macOS

Git sur Mac utilise généralement déjà osxkeychain : le token saisi une fois est enregistré dans le trousseau. Pour une connexion par navigateur, installez Git Credential Manager (par exemple avec Homebrew : brew install --cask git-credential-manager) ; il se configure automatiquement.

Linux

Sous Linux, GCM s'installe séparément (paquet .deb ou archive des releases du projet), puis on lance la configuration et on choisit le stockage :

git-credential-manager configure
git config --global credential.credentialStore secretservice

Sur un serveur sans interface graphique, un cache temporaire est plus simple :

git config --global credential.helper 'cache --timeout=3600'

Alternative pour GitHub : gh auth login

Si la GitHub CLI est installée, la commande gh auth login guide la connexion dans le navigateur, et gh auth setup-git configure Git pour utiliser les identifiants de gh. C'est une façon pratique de « se connecter à Git » en une seule commande.

Réinitialiser ou mettre à jour un mot de passe Git enregistré

Le cas le plus fréquent : le token a expiré ou vous avez changé de compte, mais Git continue d'envoyer les anciennes données et reçoit Authentication failed. Il faut alors supprimer l'entrée enregistrée : lors du push suivant, Git redemandera les identifiants.

Commande universelle

Elle fonctionne avec n'importe quel assistant :

printf "protocol=https\nhost=github.com\n\n" | git credential reject

Git reset credentials sous Windows

Ouvrez le Panneau de configuration → Gestionnaire d'identifiants → Identifiants Windows, repérez les entrées du type git:https://github.com et supprimez-les. Vous pouvez aussi le faire en ligne de commande :

cmdkey /list | findstr git
cmdkey /delete:git:https://github.com

Si vous utilisez GCM, il dispose également de sa propre commande de déconnexion : git credential-manager github logout <identifiant>.

macOS

Ouvrez le Trousseau d'accès, recherchez l'entrée github.com de type « mot de passe Internet » et supprimez-la. Ou depuis le terminal :

git credential-osxkeychain erase
host=github.com
protocol=https

Après la dernière ligne, appuyez encore une fois sur Entrée pour transmettre la ligne vide.

Linux et store

Pour store, supprimez la ligne contenant github.com dans ~/.git-credentials ; pour cache, exécutez git credential-cache exit.

Erreurs d'authentification et solutions

Support for password authentication was removed

Vous avez saisi le mot de passe du compte. Créez un token et collez-le dans le champ Password, ou configurez Git Credential Manager. Si l'erreur persiste sans qu'on vous demande de mot de passe, l'ancien mot de passe est enregistré dans le stockage : supprimez-le comme indiqué plus haut.

git push : Authentication failed

Causes, par ordre de fréquence : le token a expiré ; le token a été révoqué ; le token fine-grained n'a pas accès à ce dépôt ou le droit Contents est en lecture seule ; le stockage contient les données d'un autre compte. Vérifiez la durée et les droits du token dans Developer settings, puis réinitialisez les identifiants enregistrés.

remote: Permission denied (403)

L'authentification a réussi, mais votre compte n'a pas le droit d'écriture sur ce dépôt. Le propriétaire doit vous ajouter dans Collaborators, ou bien vous travaillez via votre fork et une pull request.

Repository not found

Pour un dépôt privé, GitHub ne révèle pas s'il existe : avec un token incorrect, il répond « not found ». Vérifiez l'adresse avec git remote -v et les droits du token.

Git clone demande le mot de passe à chaque fois

Le credential helper n'est pas configuré. Activez manager ou osxkeychain : après la première saisie réussie, Git ne demandera plus rien. Autre solution : passer à SSH.

Comment conserver un token en sécurité

  • Accordez le minimum de droits : un token fine-grained pour les dépôts nécessaires, plutôt qu'un token classic avec repo.
  • Fixez une durée de validité et renouvelez le token au lieu de le prolonger indéfiniment.
  • Ne committez jamais de token et ne l'insérez pas dans les adresses des remotes ; si un token atterrit dans un dépôt public, GitHub peut le révoquer automatiquement, mais considérez-le comme compromis et supprimez-le vous-même.
  • Utilisez le stockage système (GCM, trousseau) plutôt que store.
  • Un token par machine ou par tâche : en cas de fuite, vous ne révoquez que celui-là.

Conclusion

Le mot de passe GitHub ne fonctionne plus avec Git en HTTPS depuis 2021. Il reste trois solutions viables : vous connecter via Git Credential Manager dans le navigateur, créer un token GitHub et le saisir à la place du mot de passe, ou passer aux clés SSH. Le token se crée dans Settings → Developer settings, le credential.helper le conserve, et face à l'erreur Authentication failed, le renouvellement du token et la réinitialisation des anciens identifiants règlent presque toujours le problème. La connexion à GitHub et le travail avec les dépôts distants sont traités en pratique dans le cours sur Git.

Questions fréquentes

Peut-on revoir un token GitHub après sa création ?

Non, GitHub n'affiche le token qu'une seule fois. Si vous ne l'avez pas noté, supprimez l'ancien token et créez-en un nouveau.

Faut-il un token pour cloner un dépôt public ?

Non, un dépôt public se clone et se met à jour avec git pull sans authentification ; le token est nécessaire pour les dépôts privés et pour git push.

Que se passe-t-il quand le token expire ?

Git reçoit Authentication failed. Créez un nouveau token (ou cliquez sur Regenerate pour l'ancien), supprimez les identifiants enregistrés et saisissez le nouveau token lors du prochain push.

Le token GitHub fonctionne-t-il avec l'authentification à deux facteurs ?

Oui, il est même nécessaire lorsque la 2FA est activée : il remplace le mot de passe et le code de confirmation pour les opérations Git. Git Credential Manager gère lui-même la 2FA lors de la connexion dans le navigateur.

Où Git stocke-t-il l'identifiant et le mot de passe ?

Git ne les stocke pas lui-même : c'est le rôle du credential helper, à savoir le Gestionnaire d'identifiants Windows, le trousseau macOS, Secret Service sous Linux ou le fichier ~/.git-credentials avec helper store.

Apprenez ce sujet en vidéo

Ce sujet est traité en détail avec de la pratique dans le cours « Git de zéro à développeur confirmé ».

Voir le cours