Publié le 23/07/2015.
Afin de gérer mes mots de passe et autres données sensibles, j'ai choisi d'utiliser un logiciel spécialisé : pass. En quelques mots, c'est un script bash qui utilise GnuPG pour stocker vos mots de passe de manière chiffrée.
Personnellement j'ai tendance à faire un dossier par service et à y mettre mon identifiant dans login
, mon mot de passe dans pass
et ainsi de suite. Libre à vous de faire autrement. Bref, voici un exemple d'utilisation basique d'utilisation avec un service en ligne classique.
On inscrit notre identifiant pour le site example.com :
$ pass insert example.com/login
Enter password for example.com/login:
Retype password for example.com/login:
On génère un mot de passe de 42 caractères que l'on utilisera sur ce site. J'insiste sur le fait que, non, 42 caractères ce n'est pas trop long. Maintenant que l'on a plus besoin de se souvenir de nos mots de passe, on ne va pas se priver niveau longueur.
$ pass generate example.com/pass 42
The generated password for example.com/pass is:
Xa#-urBzjLWqwv&1ttPI~|~piPY=2_'Qh^A>zlssBG
Ooops, le site nous demande de ne pas mettre de caractères spéciaux, on utilise donc l'option -n
pour n'avoir que des caractères alphanumériques :
$ pass generate -n example.com/pass 42
An entry already exists for example.com/pass. Overwrite it? [y/N] y
The generated password for example.com/pass is:
7vTmM1W9wzfFxUTyHiMQP1IWlU9yEHvOU1MEcyGhRk
On peut lister les mots de passe enregistrés avec la sous-commande ls
:
$ pass ls example.com
example.com
├── login
└── pass
Lorsque l'on voudra s'identifier, il suffit d'afficher le contenu stocké. Pour les mots de passe on préférera utiliser l'option -c
afin de le copier dans le presse papier pendant 45 secondes.
$ pass example.com/login
plop
$ pass -c example.com/pass
Copied example.com/pass to clipboard. Will clear in 45 seconds
En fait pass stock chaque mot de passe dans un fichier sur le disque. Les dossiers que vous créez sont également des dossiers sur le disque. Tout est accessible dans ~/.password-store
. Du coup, c'est extrêmement simple de versionner le tout avec git, d'autant plus que c'est intégré dans pass.
$ pass git init
Initialized empty Git repository in /home/rodolphe/.password-store/.git/
$ pass git remote add origin ssh://derp@monserveur.example.com/srv/repos/pass.git
Oui, au lieux de vous mettre dans ~/.password-store
et d'utiliser directement git, vous pouvez utiliser git comme une sous-commande de pass. Comme ça plus besoin de changer de répertoire. Vous avez bien entendu accès à toutes les sous-commandes de git. Bon à savoir : à chaque ajout/suppression/modification, pass créé un commit. Vous n'avez donc plus qu'a push/pull de temps en temps et le tour est joué.
Bien que les fichiers soient chiffrés et que personne ne puisse en lire le contenu sans posséder votre clé privée, ne vous amusez pas à rendre le dépôt git publique. En effet, le nom même des fichiers et dossiers reste visible, tout le monde serait en mesure de regarder où vous possédez des comptes et autres choses du genre. Méta-données machin tout ça quoi.
Il est possible de stocker des clés secrètes TOTP et de générer les codes à usage unique en passant la clé à un programme spécifique.
$ pass example.com/toto | totp-cli
487463
Pour les sites qui demandent les caractères situés à certaines position, man cut
est votre ami :
$ pass example.com/pass | cut -c 1,3,12,21
7TFP
Pour utiliser un mot de passe dans un script shell, rien de plus simple :
#!/bin/sh
example_password="$(pass example.com/pass)"