Ik heb jarenlang KeePass gebruikt. Daarna 1Password. Daarna Bitwarden. Allemaal prima tools, maar ze voelden altijd… te veel. Te veel UI, te veel features, te veel gedoe om ze goed te integreren in mijn workflow.
Toen ontdekte ik pass. Een password manager die precies doet wat de naam zegt: wachtwoorden opslaan. Niets meer, niets minder.
Wat is pass?
Pass is de “standard unix password manager.” Het is een shell script van ~700 regels dat wachtwoorden opslaat als GPG-versleutelde bestanden in een directory. Dat is het. Geen database, geen proprietary format, geen cloud sync ingebouwd.
~/.password-store/
├── email/
│ ├── gmail.gpg
│ └── protonmail.gpg
├── social/
│ └── github.gpg
└── work/
├── gitlab.gpg
└── jira.gpg
Elk .gpg bestand is een versleuteld tekstbestand met je wachtwoord (en optioneel extra info). De directory structuur is je organisatie.
In 5 minuten aan de slag
Installatie
# macOS
brew install pass gnupg
# Debian/Ubuntu
sudo apt install pass gnupg
# Arch
sudo pacman -S pass gnupg
GPG key nodig
Pass gebruikt GPG voor encryptie. Als je nog geen GPG key hebt:
gpg --full-generate-key
Kies RSA, 4096 bits, en vul je naam en email in. Onthoud je passphrase goed — die heb je nodig om wachtwoorden te ontsleutelen.
Password store initialiseren
# Gebruik je GPG key ID of email
pass init "tom@example.com"
Dit maakt ~/.password-store/ aan met een .gpg-id bestand dat aangeeft welke GPG key gebruikt wordt.
Je eerste wachtwoord
# Genereer een nieuw wachtwoord
pass generate email/gmail 24
# Of voeg een bestaand wachtwoord toe
pass insert social/github
Dat is het. Je hebt nu een werkende password manager.
Wachtwoord ophalen
# Toon wachtwoord in terminal
pass email/gmail
# Kopieer naar clipboard (verdwijnt na 45 sec)
pass -c email/gmail
Waarom dit werkt voor mij
Pass past perfect in een terminal-first workflow. Geen app die moet opstarten, geen browser extensie die moet laden. Just:
pass -c work/gitlab
En het wachtwoord zit in mijn clipboard.
Maar er is meer. Omdat pass gewoon bestanden in een directory gebruikt:
- Het is doorzoekbaar:
pass find gitlabof gewoonls ~/.password-store/ - Het is scriptbaar:
pass show -c $(pass find jira | head -1) - Het integreert met alles: dmenu, rofi, fzf, Alfred, je eigen scripts
Meer dan alleen wachtwoorden
Een .gpg bestand kan meer bevatten dan alleen een wachtwoord. De conventie is: eerste regel is het wachtwoord, daarna metadata.
pass edit email/gmail
SuperSecurePassword123!
---
username: tom@gmail.com
url: https://mail.google.com
otp: otpauth://totp/Gmail:tom@gmail.com?secret=JBSWY3DPEHPK3PXP
notes: recovery email is backup@proton.me
Je kunt zelfs TOTP (2FA) codes genereren:
# Met pass-otp extensie
pass otp email/gmail
Git sync: de killer feature
Pass heeft ingebouwde git support. Dit is waarom ik nooit meer terug ga naar andere password managers.
# Initialiseer git repo
pass git init
# Elke wijziging wordt automatisch gecommit
pass generate new/password 20
# → [master 1a2b3c4] Add generated password for new/password.
# Push naar remote
pass git push
Je password store is nu een git repository. Dit betekent:
- Automatische backups naar je git remote
- Sync tussen machines met gewoon
pass git pull - Versie historie van al je wachtwoorden
- Conflict resolution als je op twee machines tegelijk wijzigt
Ik heb mijn password store in een private GitLab repo. Op een nieuwe machine:
git clone git@gitlab.com:tom/password-store.git ~/.password-store
Klaar. Alle wachtwoorden beschikbaar.
Browserintegratie
“Maar ik wil toch auto-fill in mijn browser!”
Dat kan. Er zijn extensies voor Firefox en Chrome:
- Browserpass — native messaging, werkt goed
- passff — Firefox-only, ook solide
Browserpass leest je password store, matcht de URL met je directory structuur, en vult in. Het werkt verrassend goed.
~/.password-store/
├── github.com/
│ └── tom.gpg # auto-matched op github.com
├── gitlab.com/
│ └── work.gpg
└── mail.google.com/
└── personal.gpg
Fuzzy finding met fzf
Dit is mijn dagelijkse workflow. Een simpel script:
#!/bin/bash
# passfzf - fuzzy find and copy password
password=$(find ~/.password-store -name "*.gpg" | \
sed 's|.*/\.password-store/||; s|\.gpg$||' | \
fzf --height 40% --reverse)
[[ -n "$password" ]] && pass -c "$password"
Bind dit aan een hotkey en je hebt instant wachtwoord lookup met fuzzy matching.
Of gebruik rofi-pass als je rofi gebruikt:
rofi-pass
Multi-key encryptie
Wachtwoorden delen met een team? Pass ondersteunt meerdere GPG keys:
pass init key1@example.com key2@example.com
Nu kunnen beide keys alle wachtwoorden ontsleutelen. Je kunt zelfs per-directory andere keys gebruiken:
# Alleen jij hebt toegang tot personal/
echo "your-key-id" > ~/.password-store/personal/.gpg-id
# Het hele team heeft toegang tot shared/
echo -e "key1\nkey2\nkey3" > ~/.password-store/shared/.gpg-id
pass init
Pass extensions
Pass heeft een extensie systeem. Handige extensies:
pass-otp
TOTP/HOTP support voor 2FA:
# Voeg OTP toe
pass otp insert email/gmail
# Plak de otpauth:// URL
# Genereer code
pass otp email/gmail
# → 482193
pass-tomb
Versleutel je hele password store in een Tomb container:
pass tomb open
# ... doe je ding ...
pass tomb close
Extra laag beveiliging als iemand fysieke toegang tot je machine heeft.
pass-update
Bulk update wachtwoorden:
pass update -l 32 work/*
Het echte nadeel: key management
En hier komen we bij de keerzijde. Pass is zo simpel omdat het GPG gebruikt. En GPG key management is… niet simpel.
Je GPG key is kritiek
Als je je GPG private key verliest, ben je al je wachtwoorden kwijt. Permanent. Er is geen “forgot password” optie, geen support die je kan helpen.
Dit betekent:
- Backup je GPG key op meerdere plekken
- Onthoud je passphrase — schrijf ’m eventueel op papier in een kluis
- Overweeg een hardware key (YubiKey) voor extra beveiliging
GPG kan frustrerend zijn
GPG is krachtig maar ook notoir onvriendelijk:
gpg: decryption failed: No secret key
gpg: problem with the agent: No pinentry
gpg: public key not found
Als je niet gewend bent aan GPG, kan de leercurve steil zijn. Pinentry popups die niet werken, agents die vastlopen, keys die niet gevonden worden.
Geen ingebouwde mobile app
Er is geen officiële pass app. Er zijn third-party apps:
- Android: Password Store — werkt goed, synct via git
- iOS: Pass for iOS — ook git sync
Maar het is niet zo gepolijst als 1Password of Bitwarden op mobile. Je moet git credentials configureren, GPG keys importeren… het kost setup tijd.
Geen password sharing via link
“Deel dit wachtwoord met een collega” is niet een feature. Je kunt multi-key encryptie gebruiken, maar dat vereist dat iedereen GPG keys heeft. Voor quick sharing met non-techies is pass niet ideaal.
Sync conflicts kunnen lastig zijn
Git sync is geweldig, maar als je op twee machines tegelijk een wachtwoord wijzigt, krijg je een merge conflict. In een versleuteld bestand. Dat is… niet leuk om op te lossen.
In de praktijk is dit zelden een probleem als je pass git pull doet voordat je wijzigingen maakt. Maar het kan gebeuren.
Wanneer pass wél perfect is
Pass is ideaal als:
- Je comfortabel bent in de terminal
- Je al GPG gebruikt (of bereid bent het te leren)
- Je controle wilt over je data (geen cloud, tenzij jij dat wilt)
- Je het wilt integreren in scripts en automation
- Je een simpele, auditeerbare oplossing wilt (~700 regels bash)
Wanneer je iets anders moet kiezen
Kies Bitwarden of 1Password als:
- Je wachtwoorden deelt met non-techies (familie, collega’s zonder GPG)
- Je een gepolijste mobile experience wilt zonder setup
- Je geen zin hebt in GPG key management
- Je organisatie compliance vereist met specifieke password managers
Mijn setup
Voor de geïnteresseerden, dit is hoe ik pass gebruik:
# ~/.zshrc
export PASSWORD_STORE_DIR="$HOME/.password-store"
export PASSWORD_STORE_CLIP_TIME=30
# Fuzzy find alias
alias p='passfzf'
# Quick copy
alias pc='pass -c'
Mijn password store zit in een private GitLab repo. Ik sync tussen laptop, desktop, en telefoon. De GPG key zit op een YubiKey, met een backup op een air-gapped machine.
Is het meer setup dan Bitwarden? Ja. Maar het past perfect in mijn workflow, ik heb volledige controle over mijn data, en er is geen vendor die morgen kan besluiten de prijzen te verhogen of de boel te verkopen.
Conclusie
Pass is de password manager voor mensen die van Unix filosofie houden: doe één ding, doe het goed, en integreer met andere tools. Het is niet voor iedereen — de GPG afhankelijkheid alleen al maakt het voor veel mensen ongeschikt.
Maar als je een terminal-first workflow hebt, als je controle wilt over je data, en als je bereid bent de GPG leercurve te nemen: pass is een verademing na alle overengineered password managers.
Het is ~700 regels bash. Het slaat bestanden op in een directory. Het werkt met git. En het doet precies wat het moet doen.
Soms is simpel gewoon beter.
Resources:
- passwordstore.org — officiële site
- pass git repo — broncode
- Browserpass — browser extensie
- Password Store (Android) — Android app
