Unix pass

Version datée du 24 octobre 2025 à 08:12 par Geo (discussion | contributions)

🔐 1. pass – Le gestionnaire de mots de passe Unix

✅ Avantages :

  • 100perso.kdbx% CLI
  • Chiffrement avec GPG
  • Compatible Git (versionnage)
  • Très léger et scriptable

🔧 Installation :

sudo apt-get install pass gnupg
gpg --full-generate-key
gpg --list-keys

Puis initialise pass : avec pub

pass init "Identité GPG"

🔧 Utilisation :

  • Ajouter un mot de passe :

    pass add perso/site-web
    

    → tape ton mot de passe quand demandé

  • Afficher un mot de passe : bash pass show perso/site-web

  • Lister les entrées : bash pass ls

  • Supprimer une entrée : bash pass rm perso/site-web


🔐 2. Commandes pratiques (compatibles Debian 13) pour :

  1. Voir les TTL effectifs de gpg‑agent
  2. Vérifier que l’agent tourne (ou le lancer si besoin)

1) Afficher les TTL effectifs (default & current)

# Affiche les valeurs "default" et "current" vues par gpg-agent
gpgconf --list-options gpg-agent \
| awk -F: '/^default-cache-ttl|^max-cache-ttl/ {printf "%-20s default=%s  current=%s\n",$1,$7,$10}'
  • default-cache-ttl : durée par défaut (en secondes) de mise en cache de ta passphrase.
  • max-cache-ttl : durée maximale (plafond) autorisée.

Si aucune « current » n’est définie dans la conf utilisateur, ce seront les valeurs par défaut de GnuPG: typiquement 600 s (10min) pour default-cache-ttl et 7200 s (2h) pour max-cache-ttl.

Tu peux aussi vérifier ce que tu as explicitement configuré :

grep -E '^(default|max)-cache-ttl' "$HOME/.gnupg/gpg-agent.conf" || echo "Aucun TTL défini dans gpg-agent.conf (valeurs par défaut appliquées)"

Référence: la conf du cache TTL est gérée par gpg-agent, pas par pass lui‑même (voir la doc man de pass et gpg-agent).


2) Vérifier que gpg‑agent tourne (et obtenir son socket)

Méthode simple (et idempotente)

# Lance l’agent si besoin (sans créer de doublons), ne produit pas d’erreur si déjà lancé
gpgconf --launch gpg-agent

# Récupère le chemin du socket
SOCK="$(gpgconf --list-dirs agent-socket)"
echo "Socket gpg-agent: $SOCK"

# Vérifie que le socket existe
ls -l "$SOCK"

Tester la communication avec l’agent

# Interroge l'agent (retourne la version si OK)
gpg-connect-agent 'GETINFO version' /bye

(Optionnel) Voir le/les processus

pgrep -a gpg-agent || echo "Aucun processus gpg-agent visible (il peut être auto-spawn via le socket)"

Points à connaître dans un container Docker :

  • gpgconf --launch gpg-agent et gpg-connect-agent suffisent : gpg-agent est auto‑démarré à la demande via le socket UNIX, même sans systemd.
  • Si tu utilises pinentry-mode loopback (fréquent en CI/container), pense à l’option --pinentry-mode=loopback côté GnuPG/gpg et/ou à configurer allow-loopback-pinentry dans gpg-agent.conf.

Bonus : remettre à jour l’agent après modification des TTL

Si tu modifies ~/.gnupg/gpg-agent.conf :

gpgconf --reload gpg-agent
# puis re-vérifie :
gpgconf --list-options gpg-agent | awk -F: '/^default-cache-ttl|^max-cache-ttl/ {printf "%-20s default=%s  current=%s\n",$1,$7,$10}'

Le délai avant que pass show te redemande la passphrase GPG dépend du cache d’agent GPG (gpg-agent), pas de pass lui-même.

Par défaut :

  • gpg-agent garde la passphrase en mémoire pendant 600 secondes (10 minutes) après la dernière utilisation.
  • Ce délai est contrôlé par les paramètres :
    • default-cache-ttl (par défaut 600 s)
    • max-cache-ttl (par défaut 7200 s = 2 h)

Ces paramètres se trouvent dans le fichier :

~/.gnupg/gpg-agent.conf

Pour vérifier ou modifier :

Ajoute par exemple :

default-cache-ttl 3600      # 1 heure
max-cache-ttl 7200          # 2 heures

Puis recharge l’agent :

gpgconf --reload gpg-agent