Présentation de pass (ou plus longuement passwordstore)

Posted on 30 avr. 2026
tl;dr: plus dev tu meurs

Pass, ou Passwordstore est un outil de gestion des mots de passe sécurisé. Jusque là, pas grand chose de plus que les autres solutions de gestionnaires de mot de passe. Là où Pass se distingue, c’est que c’est l’outil parfait pour tout utilisateur avancé linuxien. Tout d’abord parce que ça se passe dans un shell. Ensuite, parce qu’il se base sur plusieurs concepts largement utilisés au sein de son écosystème, et parce qu’il le fait simplement.

Tout est fichier

Pas grand chose à ajouter à cette phrase mythique. Sous Linux, tout est fichier. Dans Pass, tout est fichier. Les mots de passe sont donc stockés dans des fichiers, sous une arborescence qui est construite selon la volonté de l’utilisateur. Par convention, de mon côté, je travaille de la manière suivante: je fais un dossier pour chaque site, ayant le nom du site. Dans ce dossier je fais un fichier nommé avec l’adresse mail ou le login utilisé. Dans ce fichier sera stocké le mot de passe.

Le chiffrement

Chaque système de gestion de mots de passe a besoin de passer par un chiffrement de ceux-ci, pour rendre les données illisibles (du moins sans le moyen d’authentification défini). Les méthodes de chiffrement sont plus ou moins les même selon le fournisseur utilisé. Ici ce sont aussi les mêmes algorithmes, mais le support est original puisque c’est l’outil GPG qui permet de chiffrer les mots de passe.

GPG ?

GPG (GnuPG), est un système permettant d’effectuer plusieurs actions, donc le chiffrement d’un message, ce qui nous intéresse ici. Son fonctionnement est asymétrique, ce qui implique que pour chiffrer un mot de passe, on doit être en possession de la clé GPG privée, mais que pour la lecture d’un mot de passe, seule la clé publique est nécessaire.

Pass nécessite donc une clé GPG pour fonctionner et on peut tout à fait en créer une au moment où l’on démarre l’utilisation de ce logiciel. Mais là où c’est intéressant, c’est que la clé GPG est utilisée ailleurs. Une clé GPG permet en effet de chiffrer un message, comme on vient de le voir. Ça peut donc être un mot de passe comme ici, mais ça peut aussi être un fichier ou une archive. Une clé GPG permet de plus de signer messages ou encore commits. Par ce biais là, la clé GPG devient un vecteur d’authentification. En effet, à sa création, on y renseigne un nom et une adresse mail. La clé est vraiment attribuée à une personne. Elle peut d’ailleurs être publiée sur un serveur de clés, où l’on peut trouver les clé publique de nombreuses personnes.

Et dans Pass ?

Dans pass, donc, on a une utilisation simple de notre clé. Elle permet de chiffrer les mots de passe. Et, si vous creusez le sujet, vous verrez que dans un fichier .gpg-id, on retrouve l’id de la clé GPG avec laquelle les mots de passe sont chiffrés. Il est possible de chiffrer le store pour plusieurs clés et donc partager celui-ci avec plusieurs personnes. Il est à noter que la sécurisation du store se fait également ici puisque lorsque l’on veut consulter un mot de passe, on a besoin de déverouiller la clé. Si celle-ci a une phrase de passe, elle est alors demandée. Il est donc judicieux d’en mettre une pour ne pas avoir à configurer de sécurité plus tard.

La sauvegarde

Pour être créé, le store ne nécessite qu’une machine locale. Le store se place par défaut dans le home (~/.password-store). Sa sauvegarde se fait donc facilement en copiant le dossier. Mais Pass vient avait un énorme avantage: git.

Git ?

Rappel très rapide, git est un gestionnaire de version. Il permet, de manière incrémentale, d’historiser le contenu des différents fichiers d’un dossier et de ses enfants pour pouvoir y accéder dans le futur. Git est donc la mémoire d’une arborescence d’un dossier.

Et dans Pass ?

Ici, ça nous intéresse parce que, comme on l’a vu plus haut, on travaille avec des fichiers. On va donc pouvoir synchroniser nos mots de passe grâce à git. Pass fonctionne de manière très transparente avec git: chaque création/modification de mot de passe correspond à un commit, et lorsque l’on veut se synchroniser avec le dépôt distant, il suffit d’une commande simple, semblable à ce qu’un développeur fait lorsqu’il travaille sur ses dépôts de code: pass git push. Cela permet ensuite de propager les modifications sur plusieurs terminaux.