Git Credential Manager (GCM) est le helper recommandé : il stocke
vos identifiants de façon sécurisée dans le trousseau de clés de l’OS.
Mais Git propose aussi des helpers plus simples (cache, store) et
vous pouvez opter pour des clés SSH au lieu de tokens HTTPS. Ce guide
couvre tous les mécanismes d’authentification Git.
Prérequis : Protocoles Git et Installer et configurer Git.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Configurer le helper adapté à votre OS (cache, store, manager-core)
- Comprendre les différences entre les helpers et leurs niveaux de sécurité
- Gérer les tokens HTTPS et les clés SSH selon la plateforme
- Éviter de retaper vos credentials à chaque opération réseau
Pourquoi un credential helper ?
Section intitulée « Pourquoi un credential helper ? »Sans helper, Git demande le nom d’utilisateur et le mot de passe (ou
token) à chaque push, pull et fetch via HTTPS. Un credential
helper stocke ces identifiants pour les réutiliser automatiquement.
Les helpers intégrés
Section intitulée « Les helpers intégrés »cache : en mémoire temporaire
Section intitulée « cache : en mémoire temporaire »Stocke les identifiants en mémoire pendant 15 minutes (par défaut). Rien n’est écrit sur le disque :
git config --global credential.helper cache
# Augmenter la durée à 1 heure (3600 secondes)git config --global credential.helper 'cache --timeout=3600'Idéal pour : sessions de travail courtes, machines partagées.
store : en fichier texte
Section intitulée « store : en fichier texte »Enregistre les identifiants en clair dans ~/.git-credentials :
git config --global credential.helper storeLe fichier contient :
https://user:token@github.comosxkeychain : trousseau macOS
Section intitulée « osxkeychain : trousseau macOS »Intégré avec le Trousseau d’accès macOS (Keychain) :
git config --global credential.helper osxkeychainLes identifiants sont stockés de façon chiffrée et accessibles via l’app Trousseau d’accès.
Git Credential Manager (GCM)
Section intitulée « Git Credential Manager (GCM) »La solution recommandée. GCM fonctionne sur Linux, macOS et Windows. Il utilise le trousseau de clés natif de l’OS et prend en charge l’authentification OAuth/SAML pour GitHub, GitLab, Azure DevOps et Bitbucket.
Installation
Section intitulée « Installation »# macOS (via Homebrew)brew install --cask git-credential-manager
# Linux (Debian/Ubuntu)curl -fsSL https://aka.ms/gcm/linux-install-source.sh | shgit-credential-manager configure
# Windows (inclus dans Git for Windows)# Déjà installé et configuréConfiguration
Section intitulée « Configuration »git config --global credential.helper manager
# Vérifiergit config --global credential.helper# managerGCM ouvre automatiquement le navigateur pour l’authentification OAuth au premier push/pull. Le token obtenu est stocké dans le trousseau de clés de l’OS.
Fonctionnalités de GCM
Section intitulée « Fonctionnalités de GCM »| Fonctionnalité | Détail |
|---|---|
| OAuth / SAML | Authentification via navigateur |
| Stockage sécurisé | Keychain (macOS), Secret Service (Linux), Credential Manager (Windows) |
| Multi-comptes | Gestion de plusieurs comptes par plateforme |
| Proxy | Support des proxies d’entreprise |
| Plateformes | GitHub, GitLab, Azure DevOps, Bitbucket |
SSH keys vs HTTPS tokens
Section intitulée « SSH keys vs HTTPS tokens »| Critère | SSH keys | HTTPS + token |
|---|---|---|
| Configuration | Génération de clé + ajout sur la plateforme | Token + credential helper |
| Sécurité | Clé privée chiffrée (passphrase) | Token révocable, scoped |
| Pare-feu | Port 22 (parfois bloqué) | Port 443 (rarement bloqué) |
| Multi-comptes | 1 clé par compte (SSH config) | 1 token par scope |
| Expiration | Pas d’expiration (sauf rotation manuelle) | Configurable (30/90/365 jours) |
| CI/CD | Deploy keys | Tokens de service |
| Facilité | Setup initial plus complexe | Plus simple avec GCM |
Recommandation par contexte
Section intitulée « Recommandation par contexte »- Développeur solo : SSH ed25519 (setup unique, pas de token à renouveler)
- Équipe avec SSO : HTTPS + GCM (OAuth intégré)
- CI/CD : HTTPS + token de service (scoped, révocable)
- Derrière un pare-feu : HTTPS (port 443), SSH sur port 443 en fallback
Personal Access Tokens (PAT)
Section intitulée « Personal Access Tokens (PAT) »Les plateformes Git utilisent des tokens au lieu des mots de passe :
- Settings → Developer settings → Personal access tokens → Fine-grained
- Sélectionnez les permissions (repo, workflow…)
- Copiez le token, utilisez-le comme mot de passe
- User Settings → Access Tokens
- Sélectionnez les scopes (
read_repository,write_repository…) - Copiez le token
Bonnes pratiques tokens
Section intitulée « Bonnes pratiques tokens »- Scoped : donnez le minimum de permissions
- Expiration : configurez une date d’expiration
- Rotation : renouvelez régulièrement
- Jamais dans le code : utilisez des variables d’environnement ou un credential helper
Gérer plusieurs comptes
Section intitulée « Gérer plusieurs comptes »Avec SSH (fichier ~/.ssh/config)
Section intitulée « Avec SSH (fichier ~/.ssh/config) »# Compte personnelHost github-perso HostName github.com User git IdentityFile ~/.ssh/id_ed25519_perso
# Compte proHost github-pro HostName github.com User git IdentityFile ~/.ssh/id_ed25519_progit clone git@github-perso:user/repo.git # Compte persogit clone git@github-pro:org/repo.git # Compte proAvec HTTPS (conditional includes)
Section intitulée « Avec HTTPS (conditional includes) »[includeIf "gitdir:~/perso/"] path = ~/.gitconfig-perso
[includeIf "gitdir:~/work/"] path = ~/.gitconfig-work[user] email = perso@example.com[credential "https://github.com"] username = user-persoDépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Solution |
|---|---|---|
| Git redemande le mot de passe | Pas de credential helper | Configurez cache, store ou GCM |
remote: Support for password authentication was removed | GitHub n’accepte plus les mots de passe | Utilisez un PAT ou SSH |
| Token refusé sur un repo | Permissions insuffisantes | Vérifiez les scopes du token |
| GCM n’ouvre pas le navigateur | Variable DISPLAY manquante (Linux) | export GIT_TERMINAL_PROMPT=1 ou configurez le secret store |
| Mauvais compte utilisé | Multi-comptes mal configuré | Vérifiez ~/.ssh/config ou includeIf |
À retenir
Section intitulée « À retenir »cache: temporaire (mémoire), pour les sessions courtesstore: persistant en clair — à éviter si possible- GCM : recommandé — stockage sécurisé dans le trousseau de l’OS
- SSH keys : setup unique, idéal pour les développeurs solo
- HTTPS + token : plus simple avec GCM, meilleur pour les équipes SSO
- Tokens : toujours scoped, avec expiration, jamais dans le code