
2 changed files with 103 additions and 0 deletions
@ -0,0 +1,103 @@ |
|||||
|
# install and configure password-manager |
||||
|
|
||||
|
## First device |
||||
|
|
||||
|
### install |
||||
|
|
||||
|
install: |
||||
|
``` |
||||
|
apt install pass |
||||
|
``` |
||||
|
|
||||
|
### generate key |
||||
|
|
||||
|
This only needs to be done once. You will then put the key in the git repository so it can be used across different devices. First, we will generate a gpg key: |
||||
|
``` |
||||
|
gpg --full-generate-key |
||||
|
``` |
||||
|
|
||||
|
### initialize pass |
||||
|
|
||||
|
Then, we initialize `pass` with the key we generated, and create a git repository as well: |
||||
|
``` |
||||
|
pass init ${gpg-id:?} |
||||
|
pass git init |
||||
|
``` |
||||
|
The `Comment` field, if unique, can be used to identify your key instead of having to give the key's fingerprint, so make sure to choose one that is unique and easy to use. |
||||
|
|
||||
|
### add key |
||||
|
|
||||
|
Next, we add our remote to push to: |
||||
|
``` |
||||
|
pass git remote add origin ${remote_url:?} |
||||
|
``` |
||||
|
and sync with git: |
||||
|
``` |
||||
|
pass git push --set-upstream origin master |
||||
|
``` |
||||
|
|
||||
|
### export keys |
||||
|
|
||||
|
We will export our key to a directory in the repository, so we can use the key across different devices. |
||||
|
``` |
||||
|
cd .password-store/ |
||||
|
mkdir .keys |
||||
|
cd .keys/ |
||||
|
gpg --export --armor ${gpg-id:?} > pubkey.asc |
||||
|
gpg --export-secret-keys --armor ${gpg-id:?} > privkey.asc |
||||
|
``` |
||||
|
Add the keys to the repository and push: |
||||
|
``` |
||||
|
pass git add .keys |
||||
|
pass git commit -m "added keys to repo" |
||||
|
pass git push |
||||
|
``` |
||||
|
If you want, [set up auto-sync](#set-up-auto-sync) for your repository. |
||||
|
|
||||
|
## subsequent devices |
||||
|
|
||||
|
### install |
||||
|
|
||||
|
``` |
||||
|
apt install pass |
||||
|
``` |
||||
|
|
||||
|
### clone repo |
||||
|
|
||||
|
``` |
||||
|
git clone ${repo_url:?} |
||||
|
``` |
||||
|
move: |
||||
|
``` |
||||
|
mv ${repo_dir:?} .password-store |
||||
|
``` |
||||
|
set permissions: |
||||
|
``` |
||||
|
chmod og-rwx .password-store |
||||
|
``` |
||||
|
|
||||
|
### import keys |
||||
|
|
||||
|
``` |
||||
|
cd .password-store/.keys |
||||
|
gpg --import pubkey.asc |
||||
|
gpg --import privkey.asc |
||||
|
``` |
||||
|
Tell GPG you trust the key: |
||||
|
``` |
||||
|
gpg --edit-key ${key_id:?} trust quit |
||||
|
``` |
||||
|
Answer `5` to tell GPG you trust the key ultimately, then `y` to confirm. |
||||
|
|
||||
|
## Set Up Auto-sync |
||||
|
|
||||
|
We will set up a cron job to synchronize keys with the git server every 15 minutes. |
||||
|
|
||||
|
Edit your crontab by running: |
||||
|
``` |
||||
|
crontab -e |
||||
|
``` |
||||
|
Add the job: |
||||
|
``` |
||||
|
*/15 * * * * pass git pull && pass git push |
||||
|
``` |
Loading…
Reference in new issue