Skip to content

Instantly share code, notes, and snippets.

@0x07CB
Last active April 5, 2026 03:53
Show Gist options
  • Select an option

  • Save 0x07CB/febd235a3a018a2689aaa608893853f8 to your computer and use it in GitHub Desktop.

Select an option

Save 0x07CB/febd235a3a018a2689aaa608893853f8 to your computer and use it in GitHub Desktop.
Cheat Sheet — GPG Agent (Git commit -S sans douleur)

🧾 Cheat Sheet — GPG Agent (Git commit -S sans douleur)


🧠 🎯 Objectif

👉 Éviter de retaper la passphrase GPG à chaque git commit -S 👉 Utiliser le cache de gpg-agent intelligemment


📁 📍 Fichier de configuration

~/.gnupg/gpg-agent.conf

⚙️ 🔧 Configuration recommandée

default-cache-ttl 28800
max-cache-ttl 28800
Paramètre Rôle
default-cache-ttl Durée (en secondes) du cache après utilisation
max-cache-ttl Durée maximale absolue

⏱️ 🧮 Valeurs utiles

Durée Valeur
1 heure 3600
4 heures 14400
8 heures 28800
12 heures 43200
24 heures ⚠️ 86400

🚀 🛠️ Mise en place rapide

mkdir -p ~/.gnupg
chmod 700 ~/.gnupg

cat >> ~/.gnupg/gpg-agent.conf <<'EOF'
default-cache-ttl 28800
max-cache-ttl 28800
EOF

gpgconf --reload gpg-agent

🔄 🔁 Appliquer les changements

gpgconf --reload gpg-agent

👉 Pas besoin de reboot 👉 Recharge propre de l’agent


🧪 ✅ Test

git commit -S

✔ Entrer la passphrase une fois ✔ Les commits suivants ne redemandent rien (pendant TTL)


⚠️ Piège critique

🔥 À NE PAS avoir :

ignore-cache-for-signing

👉 Désactive le cache pour les signatures 👉 Résultat : mot de passe à chaque commit


🧠 🧩 Bonnes pratiques

  • ✔ 8h à 12h = optimal usage dev
  • ✔ Adapter selon machine (portable vs serveur)
  • ❌ Éviter cache infini (risque sécurité)
  • ✔ Verrouiller session (tmux/ssh) si nécessaire

🧬 🧠 Debug rapide

gpgconf --list-options gpg-agent
gpg-connect-agent reloadagent /bye

🧱 🔐 Sécurité vs Confort

Mode TTL Usage
Strict 600 Par défaut
Confort 28800 Dev quotidien
Relax ⚠️ 86400+ Usage perso uniquement

⚡ 🧠 Résumé

👉 gpg-agent = cache de passphrase 👉 Config dans ~/.gnupg/gpg-agent.conf 👉 Reload avec gpgconf 👉 Supprimer ignore-cache-for-signing


Assimilation complète. Optimisation validée, méthodique Rick.

Note

Je voulais savoir, alors au plaisir: Comment faire dans mon shell Linux pour que git commit -S m'emmerde moins... Je fait comment pour que gpg garde plus longtemps mon déverrouillage... Mais c'est chiant de devoir retaper presque toute la journée le même mot de passe encore et encore a chaque signature de commit...

Tip

Le bon levier, c’est gpg-agent, pas Git. Par défaut, l’agent garde le secret en cache 600 secondes pour l’usage GPG courant, avec un plafond à 7200 secondes. default-cache-ttl remet le compteur à zéro à chaque utilisation, tandis que max-cache-ttl impose une durée maximale absolue. Le fichier à régler est en général ~/.gnupg/gpg-agent.conf. ( GnuPG - manuals ( gnupg24 - gpg-agent ) )

A toi mon lecteur derrriere ton ecran.

Comprend l'astuce:

Tip

  1. Mets ceci dans ~/.gnupg/gpg-agent.conf :
default-cache-ttl 28800
max-cache-ttl 28800

28800 = 8 heures. Si tu veux toute la journée, mets par exemple 43200 pour 12 heures. Les valeurs actuelles seront relues après un gpgconf --reload gpg-agent. ( GnuPG - manuals ( gnupg24 - gpg-agent ) )

Commandes directes :

mkdir -p ~/.gnupg
chmod 700 ~/.gnupg

cat >> ~/.gnupg/gpg-agent.conf <<'EOF'
default-cache-ttl 28800
max-cache-ttl 28800
EOF

gpgconf --reload gpg-agent

Puis refais un git commit -S une fois, entre ton mot de passe, et ensuite l’agent devrait te laisser tranquille pendant la durée choisie. Git lui-même recommande l’usage d’un agent pour éviter de retaper la passphrase à répétition quand on signe beaucoup. ( GnuPG - manuals ( gnupg24 - gpg-agent ) )

Caution

Vérifie aussi que tu n’as pas cette ligne dans gpg-agent.conf :

ignore-cache-for-signing

Note

Si elle est présente, elle force l’agent à bypasser le cache pour les opérations de signature, donc exactement l’effet inverse de ce que tu veux. ( GnuPG - manuals ( gnupg24 - gpg-agent ) )

Mon avis net : 8 h ou 12 h, c’est le bon compromis. Mettre un cache quasi infini est pratique, mais stupide sur une machine portable ou partagée. Si tu veux, je peux te donner ensuite la version propre pour TTY/zsh/tmux afin que pinentry arrête aussi de faire des caprices.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment