Para migrar el repositorio de contraseñas que usa pass y poner el sistema en marcha en una nueva máquina hay que completar 3 pasos. Para este pequeño tutorial voy a usar a modo de ejemplo:
- persona, como nombre de usuario,
- antigua, como nombre de la máquina en la que está funcionando pass,
- nueva, como nobre de la máquina a la que se quiere migrar pass y ponerlo en funcionamiento.
- 192.168.1.34, como IP de la máquina antigua.
1. Instalar pass en la nueva máquina
persona@nueva:~$ sudo apt install pass
También se puede instalar la extensión de pass para Firefox para facilitar el uso de las contraseñas con este navegador.
2. Importar la clave GPG a la nueva máquina
Lo primero es crear una copia de seguridad del par de claves desde la línea de comandos de la máquina en la que esté funcionando, en este ejemplo antigua:
persona@antigua:~$ gpg -ao miclave-public.key --export key_id
persona@antigua:~$ gpg -ao miclave-private.key --export-secret-keys key_id
Para conseguir la gpg key id:
persona@antigua:~$ gpg --fingerprint persona@example.net
pub rsa3072 2018-03-19 [SC]
3782CBB60147010B330523DD26FBCC7836BF353A
La key ID son los 8 últimos números del fingerprint. En el caso de arriba: 36BF353A
Para importar la clave en otra máquina hay que copiar los archivos desde antigua a nueva y luego:
gpg --import miclave-public.key
gpg --import miclave-private.key
3. Copiar el directorio .password-store
Este directorio contiene el repositorio git con las contraseñas cifradas. Aunque alguien accediese a él no podría ver las contraseñas sin la clave GPG con la que están cifradas.
Para copiar el directorio a la nueva máquina se puede hacer con rsync o haciendo un git clone al repositorio. Aquí lo hago de la primera manera.
Antes de realizar la copia conviene asegurarse de que la copia local está actualizada con respecto a la copia del servidor git, si se usa un servidor remoto para sincronizar las contraseñas entre distintas máquinas. Para ello:
persona@antigua:~$ pass git pull
Para copiar con rsync desde la máquina de destino:
persona@nueva:~$ rsync -zavh persona@192.168.1.34:.password-store .
Algún posible problema
En una ocasión, tras completar los pasos anteriores e ir a consultar una contraseña, pass me devolvía el error Unusable public key
.
Encontré la solución en el foro superuser, a aplicar en la máquina nueva:
gpg --edit-key key_id
El key_id es el mismo que hemos nombrado anteriormente. Este comando abre la consola gpg, donde hay que usar el comando trust:
gpg --edit-key key_id
gpg (GnuPG) 2.4.8; Copyright (C) 2025 g10 Code GmbH
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Clave secreta disponible.
gpg> trust
Por favor, decida su nivel de confianza en que este usuario
verifique correctamente las claves de otros usuarios (mirando
pasaportes, comprobando huellas dactilares en diferentes fuentes...)
1 = No lo sé o prefiero no decirlo
2 = NO tengo confianza
3 = Confío un poco
4 = Confío totalmente
5 = confío absolutamente
m = volver al menú principal
¿Su decisión? 5
¿De verdad quiere asignar absoluta confianza a esta clave? (s/N) s
gpg> save
Instalar gnupg2
Para versiones de pass superiores a 1.6.5, se usa gpg2 en lugar de gpg, así que hay que migrar la clave a gpg2.
sudo apt install gnupg2
Y luego importar la clave a la versión 2 de gpg:
gpg --export-secret-keys > keyfile
gpg2 --import keyfile
gpgconf --kill all
Después de la importación ya sí, renovar la confianza en la clave, pero con gpg2:
gpg2 --edit-key key_id