...no me acuerdo, me lo olvido, me lo olvido, me olvidé!
Desde el 2014 que NO recuerdo la mayoría de mis passwords y es
más, ni siquiera sé cuáles son! y en cada servicio uso una
password diferente y bastante compleja. No tengo tan buena memoria,
simplemente uso pass
1.
dónde esta la magia?
pass
es un script de bash a la "unix way" 2 que se que se
ocupa de interactuar con otros comandos del sistema, como gpg
, tree
y git
, resolviendo de una manera simple, un gran problema, me permite
gestionar todas mis contraseñas e incluso varias passphrases.
generar una contraseña
Para generar de manera aleatoria una contraseña alfanumérica de 64
caracteres para el usuario admin
del sitio example.com
es tan simple
como tipear esto:
1pass generate admin/example.com -n 64
2
De esta manera se generará el archivo admin/example.com.gpg
en el
directorio ~/.password-store
y este archivo estará cifrado mediante
GPG
3 GNU Privacy Guard
utilizando la llave definida en el
archivo .gpg-id
dentro del directorio ~/.password-store
.
descifrando la magia...
Para descifrar una password es necesario contar con 2 cosas:
algo que yo tengo
, es decir los archivos de una llave GPGalgo que yo sé
, lapassphrase
4 ofrase de contraseña
Quiere decir que pass
solo me pregunta un nombre de archivo, genera la
contraseña y le dice a gpg
que la cifre y la guarde.
recuperar una contraseña
Esencialmente hay dos maneras, la primera es pedirle a pass
que me
muestre la contraseña guardada, de esta manera:
1pass admin/example.com
2
Una mucho mejor es que en lugar de mostrarnos la contraseña,
directamente se la copie al clipboard o portapapeles y de estar
manera podría ingresar al sitio example.com
como el usuario admin
sin siquiera saber cuál es la contraseña!
1pass -c admin/example.com
2
mmm... que tan seguro es todo esto?
Es posible que, en un descuido los archivos de mi GPG, alguien mas
logre copiarlos de alguna manera, o tal vez si perdí la notebook donde
estaban (nunca me pasó, ni me volverá a pasar), pero de suceder eso,
quien posea estos archivos va a necesitar la passphrase de la GPG y
en este punto radica la (in)seguridad, si utilizo una frase de
contraseña extremadamente corta o super adivinable o la tengo anotada
en un archivo de texto sin cifrar, vamos a estar comprometiendo todas
las contraseñas generadas con pass
pass <3 git
Cada vez que regeneramos una contraseña o creamos una nueva, pass
puede invocar a git
y guardar ese cambio en un repositorio,
inicialmente en el directorio ~/.password-store/.git
y llevar un log!
commit 252572a362264d91853d8ba5218380740c99c7db (HEAD -> master)
Author: osiris <osiux@osiux.com>
Date: Fri Feb 19 02:04:41 2021 -0300
Add generated password for admin/example.com.
Esto permite, poder volver a una versión anterior de una password.
secretos compartidos
Si se define un repositorio git
remoto para pass
, podés asegurarte
de tener todas tus contraseñas disponibles en otro lugar por si perdés
tu compu y no solo sirve de backup, además te permite compartir todas
tus contraseñas entre varios dispositivos, compu, notebook, celu, etc.
Solo hay que recordar sincronizar el repositorio git
de esta manera:
1pass git pull
2pass git push
3
guardar una contraseña existente
En lugar de autogenerar la password con pass
, también es posible
insertar una contraseña, lo mas simple es tipearla luego de este
comando:
1pass insert example.com/admin
2
y si en lugar de passwords usamos passphrases autogeneradas?
pass
permite que la contraseña sea un texto que provenga de otro
comando y para generar passphrases nada mejor que usar
gen-passphrase
5, por ejemplo para generar 4 palabras que comiencen
con las letras p
, a
, s
y otra s
, y que tengan entre 4 y 8
caracteres, el comando sería asi:
1gen-passphrase pass 4 8 | pass insert -m admin/example.com
2
Una posible frase de contraseña auto-generada sería la siguiente:
panol algar sulfito socavar
automatizar los commits de git
Una manera de evitar tener que acordar de ejecutar pass git push
cada
tanto es utilizar un script que lo haga por vos
1#!/bin/sh
2
3# This script comes with ABSOLUTELY NO WARRANTY, use at own risk
4# Copyright (C) 2014 Osiris Alejandro Gomez <osiux@osiux.com>
5#
6# This program is free software: you can redistribute it and/or modify
7# it under the terms of the GNU General Public License as published by
8# the Free Software Foundation, either version 3 of the License, or
9# any later version.
10#
11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14# General Public License for more details.
15#
16# You should have received a copy of the GNU General Public License
17# along with this program. If not, see <http://www.gnu.org/licenses/>.
18
19cd ~/.password-store
20git ls-files --deleted -z | xargs -0 git rm >/dev/null 2>&1
21git status --porcelain | awk '{print $2}' | while read i
22do
23git add "$i"
24done
25git commit -m "@ 00:00 hs - Autocommit"
26git push origin master
27
Y luego editar el crontab
para que se ejecute git.sh
cad 5 minutos!
*/5 * * * * $HOME/.password-store/git.sh
[TODO]{.todo .TODO} passmenu
{#passmenu}
...
[TODO]{.todo .TODO} metadata
{#metadata}
...
[TODO]{.todo .TODO} pass
en sus múltiples formas {#pass-en-sus-múltiples-formas}
...
[TODO]{.todo .TODO} múltiples GPGs y/o múltiples pass
{#múltiples-gpgs-yo-múltiples-pass}
...
[TODO]{.todo .TODO} pass patch
{#pass-patch}
...
[TODO]{.todo .TODO} ansible <3 pass
{#ansible-3-pass}
...
[TODO]{.todo .TODO} pass <3 luks
{#pass-3-luks}
...
te recomiendo leer
ChangeLog
2021-02-19 05:14
agregar no me acuerdo de nada... dejame enpass
!