Pass, gestiona tus contraseñas desde el terminal

Para los amantes del terminal Unix/Linux tener un gestor de contraseñas desde la línea de comandos es capital y una utilidad sencilla pero que cubre de sobra esta necesidad es pass. Con pass, cada contraseña "vive" dentro de un archivo cifrado gpg cuyo nombre es el título del sitio web o recurso que requiere la contraseña. Estos archivos cifrados pueden organizarse en jerarquías de carpetas, copiarlas de un ordenador a otro y, en general, manipularlas utilizando las herramientas estándar para el regex de archivos.

Pass hace que la administración de estos archivos de contraseñas individuales sea extremadamente fácil. Todas las contraseñas se localizan en ~/.password-store, y pass provee los comandos necesarios para que sea muy fácil agregar, editar, generar y recuperar contraseñas. Vamos a ver cómo instalarlo y las operaciones más comunes aunque os recomiendo echar un vistazo a su correspondiente man aquí o directamente en la consola.

Instalación (Ubuntu/Debian)

$ sudo apt-get install pass

Generar el par de claves GPG

$ gpg --gen-key

gpg: WARNING: unsafe ownership on homedir '/home/vis0r/.gnupg'
gpg (GnuPG) 2.1.15; Copyright (C) 2016 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Note: Use "gpg --full-gen-key" for a full featured key generation dialog.

GnuPG needs to construct a user ID to identify your key.

Real name: vis0r
Email address: hackplayers@ymail.com
You selected this USER-ID:
    "vis0r "

Change (N)ame, (E)mail, or (O)kay/(Q)uit? O
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: key E812D7261BE40AD9 marked as ultimately trusted
gpg: directory '/home/vis0r/.gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as '/home/vis0r/.gnupg/openpgp-revocs.d/61C23E3B0AC97802E16E8BAD21237AD48E9097E3.rev'
public and secret key created and signed.

pub   rsa2048 2017-06-28 [SC]
      61C23E3B0AC97802E16E8BAD21237AD48E9097E3
uid                      vis0r
sub   rsa2048 2017-06-28 [E]


Iniciar el password store

$ pass init vis0r
mkdir: created directory '/home/vis0r/.password-store/'
Password store initialized for vis0r


Confiar en la clave generada

$ gpg --edit-key vis0r

gpg> trust

 1 = I don't know or won't say
  2 = I do NOT trust
  3 = I trust marginally
  4 = I trust fully
  5 = I trust ultimately
  m = back to the main menu

Your decision? 5


Añadir nuevas credenciales

$ pass insert email/hackplayers@ymail.com
Enter password for email/hackplayers@ymail.com:
Retype password for email/hackplayers@ymail.com:


Mostrar las contraseñas almacenadas disponibles

$ pass show
Password Store
└── email
    └── hackplayers@ymail.com


Mostrar la contraseña en claro de una cuenta específica

$ pass email/hackplayers@ymail.com
123


Copiar la contraseña al portapapeles

$ pass -c email/hackplayers@ymail.com
Copied email/hackplayers@ymail.com to clipboard. Will clear in 45 seconds.


Borrar una cuenta

$ pass rm email/hackplayers@ymail.com
Are you sure you would like to delete email/hackplayers@ymail.com? [y/N] y
removed '/home/vmotos/.password-store/email/hackplayers@ymail.com.gpg'


Editar una contraseña existente con nano

$ pass edit Email/hackplayers@ymail.com

Generar una contraseñs automáticamente

$ pass generate Email/hackplayers@ymail.com 20
The generated password for Email/hackplayers@ymail.com is:
@JMUZaGM)r='ie/>0{8"


Generar una contraseña automáticamente sin símbolos

$ pass generate Email/hackplayers@ymail.com 20 -n
An entry already exists for Email/hackplayers@ymail.com. Overwrite it? [y/N] y
The generated password for Email/hackplayers@ymail.com is:
zvHKedJVcDYlF50tgsCd

 
Funcionalidad multilínea

Adicionalmente es posible guardar otra información como URL, pin, teléfono, etc,., Utiliza el siguiente comando:

$ pass insert Email/prueba@gmail.com -m
Enter contents of Email/prueba@gmail.com and press Ctrl+D when finished:

12345
URL: http://www.hackplayers.com
Info: web de hacking


Y no olvides asegurarte de que la primera línea contiene la password ya que es la que será copiada al portapapeles mediante la opción correspondiente.

Sincronización del almacen de contraseñas en otros sitios

Si creamos el password store en un repositorio Git podremos sincronizarlo en distintos sitios para tener disponible siempre las contraseñas.

$ pass git init
$ pass git remote add origin kexec.com:pass-store


Cada modificación creará un git commit asi que podremos sincronizar los cambios mediante pass git push y pass git pull, que llamarán a git-push o git-pull en el almacén.

$ pass git push -u --all
$ pass git pull

 
Extensiones

Pass soporta también el uso de extensiones. Para usarlas la variable PASSWORD_STORE_ENABLE_EXTENSIONS debe estar configurado a true.

La comunidad ha desarrollado unas cuantas extensiones bastante interesantes:

Clientes compatibles

La comunidad ha reunido también  una impresionante lista de clientes e interfaces gráficas para varias plataformas:
Herramientas para migrar a pass

Algunos usuarios han contribuido con scripts para ayudar a importar contraseñas de otros programas:
WEB principal: https://www.passwordstore.org/

Comentarios

  1. No conocía Tomb. Qué cosa más estupenda.
    Tampoco conocía Pass, pero es que me gusto mucho lo de Tomb.

    ResponderEliminar
  2. kpcli es más intuitivo y sencillo, en mi opinión. kpcli es la versión de línea de comandos de Keepass. Sin embargo, la ventaja de passwordstore son las extensiones y clientes.

    ResponderEliminar

Publicar un comentario