Clés GPG et Git : sécurise tes commits en 5 minutes chrono
Tu signes tes mails ? Non. Mais tu signes tes commits. Enfin… tu devrais 😅.
Parce que si tu veux que GitHub (ou GitLab) affiche le petit badge Verified à côté de tes commits, tu as besoin d’une clé GPG.
C’est elle qui prouve que toi et seulement toi as fait ce commit. Et rassure-toi : ce n’est pas sorcier.
On va voir ensemble comment créer, configurer et utiliser une clé GPG sur macOS, Linux et Windows.
📚 Pour ceux qui aiment lire la doc officielle
- GitHub Docs – Managing commit signature verification
- Pro Git – Signing Your Work
- GnuPG – Documentation officielle
⚡️ Résumé express
Suis ces étapes pour générer ta clé GPG et afficher ton badge Verified en un rien de temps 🚀
- 1️⃣ Vérifie si GPG est installé (
gpg --version
) - 2️⃣ Installe-le si besoin (
brew install gnupg
,apt install gnupg
, ouGpg4win
sous Windows) - 3️⃣ Génère une clé (
gpg --full-generate-key
) en RSA et RSA avec 4096 bits et ton email GitHub - 4️⃣ Liste tes clés pour récupérer ton ID (
gpg --list-secret-keys --keyid-format=long
) - 5️⃣ Exporte ta clé publique (
gpg --armor --export <ID>
) et colle-la dans GitHub/GitLab - 6️⃣ Configure Git pour signer automatiquement tes commits
(git config --global user.signingkey <ID>
etgit config --global commit.gpgsign true
) - 7️⃣ Configure GPG pour le terminal (
export GPG_TTY=$(tty)
)
👉 Résultat : un workflow sécurisé, pro… et le badge Verified ✨
🚀 Pourquoi signer ses commits ?
- Authenticité : prouver que c’est bien toi derrière chaque commit
- Confiance : ton équipe, ton entreprise ou tes clients savent que ton code n’est pas falsifié
- Style : le badge Verified sur GitHub, ça claque 🔥
🔧 Étape 1 : Vérifie ta config git
Commece par récupérer le nom et l'email que tu utilises pour écrire tes commits :
BASHgit config user.name git config user.email
Si tu vois une erreur, c'est que tu ne les pas encore configurés :
BASHgit config user.name "Ton nom" # Devra être le même que dans ta clé GPG git config user.email "[email protected]" # Devra être le même que ta clé GPG et doit correspondre à ton compte Github
⚙️ Étape 2 : Vérifie si GPG est déjà installé
Sur macOS et Linux :
BASHgpg --version
Si tu vois une version s’afficher, c’est bon. Sinon installe GPG :
BASH# Pour macOS brew install gnupg # Pour Ubuntu / Debian sudo apt update && sudo apt install gnupg
Sur Windows : télécharge Gpg4win puis installe-le.
🗝️ Étape 3 : Génère ta clé GPG
BASHgpg --full-generate-key
On te pose quelques questions :
- Type de clé : choisis RSA and RSA
- Taille : tape 4096 pour être tranquille
- Durée : tu peux laisser "no expiration"
- Nom: utilise le même nom que celui de ta config git (
git config user.name
) - Email : utilise le même email que celui de ta config git (
git config user.email
). Cet email doit aussi correspondre à ton compte Github - Mot de passe : mets-en un solide (il protégera ta clé privée)
🔍 Étape 4 : Liste tes clés
BASHgpg --list-secret-keys --keyid-format=long
Tu verras quelque chose comme :
BASHsec rsa4096/1234ABCD5678EFGH 2025-09-22 [SC] 0123456789ABCDEF0123456789ABCDEF01234567 uid Olivier Subirana <[email protected]>
👉 La partie importante est 1234ABCD5678EFGH : c’est l’ID de ta clé.
📤 Étape 5 : Exporte ta clé publique
Copie la clé dans ton clipboard:
BASHgpg --armor --export 1234ABCD5678EFGH | pbcopy
Colle son contenu dans GitHub :
👉 Settings > SSH and GPG Keys > New GPG key ou alors clique sur ce lien Github
🔧 Étape 6 : Configure Git pour signer automatiquement
BASH# Configure Git avec ton ID de clé git config --global user.signingkey 1234ABCD5678EFGH # Active la signature automatique git config --global commit.gpgsign true git config --global tag.gpgsign true
Désormais, tous tes commits seront signés.
🖥️ Astuce Windows (Git Bash)
INI[gpg] program = C:/Program Files (x86)/GnuPG/bin/gpg.exe
Etape 7 : Configure GPG pour le terminal (facultatif)
Ajoute ces lignes à ton ~/.zshrc
(ou ~/.bash_profile
) :
BASHexport GPG_TTY=$(tty)
Puis recharge ton shell :
BASHsource ~/.zshrc # ou ~/.bash_profile
Etape 8 :Teste ta signature
BASH# Test simple echo "test" | gpg --clearsign # Test avec un commit git commit -S -m "Test commit signé" git push
Et voilà, tu as un workflow sécurisé, pro… et un petit badge Verified qui fait plaisir ✨
❓ FAQ express
Dois-je vraiment mettre un mot de passe à ma clé GPG ?
Oui, il protège ta clé privée. Sans mot de passe, si quelqu’un récupère ton fichier de clé, il peut signer des commits à ta place.
Est-ce que je dois signer tous mes commits ?
Pas forcément. Mais si tu actives commit.gpgsign true
, Git signera automatiquement tous tes commits, ce qui évite
d’oublier.
Que faire si j’oublie mon mot de passe GPG ?
Tu ne pourras plus utiliser cette clé pour signer. La seule solution est d’en générer une nouvelle et de la réenregistrer sur GitHub/GitLab.
Problème sous Windows : Git ne trouve pas gpg.exe, que faire ?
Ajoute le chemin de GPG dans ton .gitconfig
:
INI[gpg] program = C:/Program Files (x86)/GnuPG/bin/gpg.exe
Quelle différence entre SSH et GPG ?
- SSH sert à sécuriser la connexion entre ton poste et un serveur (ex. quand tu pushes du code vers GitHub).
- GPG sert à signer et authentifier tes commits pour prouver qu’ils viennent bien de toi.
👉 Les deux sont complémentaires : SSH garantit le transport, GPG garantit l’auteur du commit.
🚀 Va plus loin : Maîtrise Git en entreprise avec nos formations sur mesure
Pourquoi choisir la formation "Maître Git" pour ton entreprise ?
- Expertise certifiée: Bénéficie de l'expérience d'un formateur spécialisé, capable de démystifier Git pour tous les niveaux.
- Programmes sur mesure: Chaque formation est adaptée à la culture de ton entreprise, à tes outils et à tes workflows spécifiques.
- Productivité accrue: Des équipes formées à l'excellence Git travaillent plus vite, avec moins d'erreurs et une meilleure collaboration.
- Sécurité renforcée: Apprends les bonnes pratiques pour protéger ton historique de code et éviter les pièges courants.
Prêt à transformer la gestion de version de ton entreprise ?
Ne laisse plus les complexités de Git freiner tes projets. Investis dans la compétence de tes équipes et assure une collaboration fluide et efficace.