Plusieurs solutions existent pour la gestion des mots de passe, chacune présentant ses avantages et inconvénients.

Je présente ici pass, un script bash permettant de gérer des mots de passe chiffrés avec GPG dans un dépôt git. Je l'ai choisi pour plusieurs raisons :

  • Très simple d'utilisation.
  • Très léger (et sans interface graphique, même s'il en existe).
  • L'utilisation de GPG permet de s'assurer de toujours pouvoir lire les mots de passe, même si pass ne fonctionne pas sur une machine (absence de pass, bug, abandon, etc.).
  • L'utilisation de git permet un versionning et un partage simples, sans devoir mettre en place un nouveau service (puisque j'utilise déjà un serveur git personnel).
  • La possibilité et la souplesse de l'utilisation en équipe.

Installation

Sous Debian, il suffit d'installer le paquet pass. D'autres paquets permettent de bénéficier de fonctionnalités supplémentaires :

  • git : Versionnement et partage simple du dépôt de mots de passe.
  • pwgen : Génération automatique de mots de passe aléatoires.
  • xclip : Copie d'un mot de passe dans le presse-papier de Xorg pendant une durée définie.

Tous ces paquets sont disponibles dans les dépôts Debian :

$ sudo apt install --no-install-recommends pass git pwgen xclip

Initialisation du dépôt

L'utilisation de pass nécessite tout d'abord d'intialiser un dépôt, dans lequel les mots de passe seront conservés, au moyen de la commande pass init.

$ pass init <gpg-id>

Le dépôt de mot de passe est placé par défaut à l'emplacemenbt ~/.password-store, mais il est possible de définir un autre emplacement dans la variable d'environnement PASSWORD_STORE_DIR.

Dans le cas où le dépôt de mots de passe doit être partagé entre plusieurs personnes, il est possible de définir plusieurs identités GPG, soit pour tout le dépôt, soit pour une partie seulement. Cela permet donc l'utilisation d'un unique dépôt de mots de passes partagé, sans pour autant permettre à tous les utilisateurs de lire tous les mots de passe qu'il contient. Par exemple :

$ pass init admin1@example.com admin2@example.com user1@example.com user2@example.com
$ pass init -p Admin admin1@example.com admin2@example.com
$ pass init -p Projects/project1 admin1@example.com user1@example.com
$ pass init -p Projects/project2 admin1@example.com admin2@example.com user2@example.com
$ pass init -p Private/admin1 admin1@example.com
$ pass init -p Private/admin2 admin2@example.com
$ pass init -p Private/user1 user1@example.com
$ pass init -p Private/user2 user2@example.com

Appeler de nouveau la commande pass init permet de modifier la liste des clés GPG utilisées.

Initialisation du dépôt git

Pour permettre le versionnement et le partage des mots de passe avec git, il est nécessaire d'initialiser un dépôt git dans le dépôt de mots de passe :

$ pass git init
$ pass git remote add origin <user@host:git-path/password-store>
$ pass git config branch.master.rebase true
$ pass git push --all -u

Toutes les commandes git sont utilisables en les préfixant par la commande pass git au lieu de simplement git. Lors de la modification du contenu du dépôt, pass fait automatiquement un commit. Les opérations de push/pull restent par contre manuelles.

Note : Définir le paramètre branch.master.rebase à true permet que git effectue un rebase automatiquement lors de chaque opération de pull. De cette manière, il n'y aura pas de commits de merge inutiles dans le dépôt.

Récupération d'un dépôt existant

Lorsque le dépôt de mots de passe existe déjà, il est possible de le récupérer au moyen d'un simple git clone :

$ git clone <user@host:git-path/password-store> ~/.password-store
$ pass git config branch.master.rebase true

Ajout d'un mot de passe

Il est possible d'ajouter un mot de passe dans le dépôt au moyen de la commande pass insert. Le mot de passe sera alors demandé deux fois, de manière interactive.

$ pass insert <Path/password-name>

Le paramètre --multiline (abrégé -m) permet d'ajouter le mot de passe depuis l'entrée standard, ou depuis l'éditeur de texte par défaut, si aucun flux n'est envoyé sur la sortie standard. Cela permet aussi d'ajouter plusieurs lignes de contenu dans le fichier, la première ligne correspondant au mot de passe, et le reste à des métadonnées.

$ pass insert -m <Path/password-name>
$ echo 'bad password' | pass insert -m <Path/password-name>

Lister les mots de passe

Il est possible d'afficher la liste totale ou partielle des mots de passe au moyen de la commande pass ls, qui est la sous-commande par défaut lorsqu'on donne un répertoire comme paramètre :

$ pass
$ pass ls
$ pass <Path>
$ pass ls <Path>

Pour afficher les mots de passe en cherchant un terme précis dans le chemin, il faut utilser la commande pass find :

$ pass find <terme>

Enfin, pour chercher un terme dans les fichiers de mots de passe, on peut utiliser la commande pass grep :

$ pass grep <terme>

Note : Cette dernière commande met beaucoup plus de temps à s'exécuter, puisqu'elle nécessite de déchiffrer tous les fichiers de mots de passe, afin d'y rechercher le terme spécifié.

Lire un mot de passe

Lire le contenu d'un fichier de mots de passe est possible avec la commande pass show, qui est la sous-commande par défaut lorsqu'on donne un fichier de mots de passe comme paramètre. Sans autre parmètre, cette commande affiche le contenu complet du fichier de mots de passe dans le terminal. En ajoutant le paramètre --clip (abrégé -c), le mot de passe (première ligne du fichier) sera automatiquement copié dans le presse-papier de Xorg pendant une durée définie (par défaut 45 secondes), puis le contenu précédent y sera remis automatiquement. Rien n'est alors affiché dans le terminal.

$ pass <Path/password-name>
$ pass --clip <Path/password-name>

La durée de présence du mot de passe dans le presse-papier est modifiable au moyen de la variable d'environnement PASSWORD_STORE_CLIP_TIME.

Modifier un mot de passe

La modification du contenu d'un fichier de mot de passe se fait au moyen de la commande pass edit, qui ouvre l'éditeur de texte par défaut afin d'y faire les modifications voulues.

$ pass edit <Path/password-name>

Génération automatique d'un mot de passe

Pour générer un mot de passe aléatoirement, il faut utiliser la commande pass generate :

$ # Génération simple d'un nouveau mot de passe aléatoire
$ pass generate <Path/password-name> <size>
$ # Génération d'un mot de passe aléatoire et copie du mot de passe généré dans le presse-papier
$ pass generate --clip <Path/password-name> <size>
$ # Génération d'un mot de passe aléatoire en remplacement d'un mot de passe existant
$ pass generate --in-place <Path/password-name> <size>
$ # Génération d'un mot de passe aléatoire sans caractères spéciaux
$ pass generate --no-symbols <Path/password-name> <size>

Déplacer un mot de passe

Il est possible de déplacer un mot de passe en utilisant la commande pass mv :

$ pass mv <Path/password-name>

Supprimer un mot de passe

Lorsqu'un mot de passe ne sera plus utile, utiliser la commande pass rm permet de le supprimer :

$ pass rm <Path/password-name>

Migration depuis d'autres gestionnaires de mots de passe

Il existe différents scripts permettant la migration des données depuis un autre gestionnaire de mots de passe dans pass. Ils sont listés sur le site officiel de pass.


Utilisation basique de GPG

dim. 25 févr. 2018 by Marmotte

GNU Privacy Guard (GPG) est un logiciel permettant de chiffrer et/ou signer des documents (fichiers, emails, commits git...), fonctionnant principalement à partir d'un système de paires de clés publique et privée.

Cet article est simplement un résumé des commandes basiques nécessaires à l'utilisation de GPG. J'explique ici l'utilisation de …

read more

Migration du SheevaPlug de Debian Wheezy vers Jessie

sam. 27 févr. 2016 by Marmotte

Après la migration du système Debian Wheezy vers Jessie sur mon SheevaPlug, j'ai eu la mauvaise surprise de me rendre compte que le système ne démarrait plus.

J'explique ici l'origine du problème qui l'empêchait de démarrer, ainsi que la solution que j'ai appliquée pour le corriger.

L'erreur

Après quelques dizaines …

read more

Masquer les messages de démarrage

dim. 15 sept. 2013 by Marmotte

Plymouth est une application lancée très tôt dans le processus de démarrage, qui permet d'afficher un écran graphique, ou semi-graphique, à la place des habituels messages de démarage du système.

Installation

Sous Debian, il suffit d'installer le paquet plymouth.

$ sudo apt-get install --no-install-recommends plymouth

Note : Certains thèmes sont disponibles dans …

read more

Environnement graphique léger

dim. 15 sept. 2013 by Marmotte

Un environnement graphique est quasi-indispensable, notamment pour visiter un bon nombre de sites web. Il en existe beaucoup sous Linux, ce qui permet de choisir selon des critères très variés.

J'aime bien les environnements légers, autant au niveau consommation de ressources qu'affichage à l'écran. Précédemment, j'utilisais Xfce, accompagné de Compiz …

read more

Versionner les configurations utilisateur

dim. 01 sept. 2013 by Marmotte

J'utilise régulièrement plusieurs ordinateurs. Avec le temps, je configure donc ces machines selon mes habitudes, afin de rendre leur utilisation plus simple et efficace pour moi.

Comme pour les notes d'installation, j'ai donc dupliqué les fichiers de configuration d'un ordinateur à l'autre, faisant des corrections sur chacun, sans forcément toujours …

read more

Introduction

mer. 28 août 2013 by Marmotte

Passionné d'informatique, adepte du libre, je passe beaucoup de temps à bidouiller sur mes différentes machines. Au fur et à mesure de mes expérimentations, j'ai tout naturellement accumulé un bon nombre de notes d'installation, et je continue d'en créer à chaque nouveau test. Il n'y a parfois qu'une procédure d'installation …

read more