...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
!