用 Pass 管理密码

3 minute read

pass for macOS usage

Pass 的优点

  • pass 是符合 unix 哲学的密码管理器,利用 gpg 本地加密存储,让人感觉比依靠互联网账号的密码管理器安全。
  • 和浏览器完美,利用browserpass可以自动填充
  • iOS 系统上有 pass for iOS,相当于免费的 1Password
  • doom emacs 中有现成的 :tool pass 可以使用

遗憾的是 pass 需要一点点配置

安装 Passbrowserpass

1
2
brew tap amar1729/formulae # browserpass tap
brew install pass browserpass

之后根据 caveats

1
PREFIX='/usr/local/opt/browserpass' make hosts-BROWSER-user -f '/usr/local/opt/browserpass/lib/browserpass/Makefile'

其中 BROWSER 可以是 chromium chrome vivaldi brave firefox 这几种浏览器 (Safari 连 endnote click 都没有,除了轻快好难用)

配置 Pass

Pass init

Pass 可以说是一套工具的集合,其中的 GnuPG 就是用来加密的。

1
2
3
4
gpg --full-generate-key
gpg --list-secret-keys --keyid-format LONG
# sec   some-text/your-keys time-today [SC]
pass init "your-keys here!"

从此 $HOME 下的 .passwordstore & .gnupg 就不能删了

Pass 导入

把 Chrome 等+( +万恶的 Google 全家桶太好用了不得不用 Chrome)密码导出后可以用这段gist的 python 代码(参考自 pass 官网)转换为 pass 的格式

用这段 gist 导出后 pass 是这样存储的:

1
2
3
tree
# --example.com
#  |-username.gpg

其中的 username.gpg 解密后是这样的

1
2
a Strong Password
user: username

Pass 使用

1
2
3
pass list # 展示.passwordstore目录树
pass insert # see below 插入已有的
... # 用emacs 所以不记这些了

详细可以看archwiki

Tweaks

用 git 同步

1
pass git init

这样每次加入密码都会 commit 并且可以同步。 用 pass for iOS 时需要 git 同步。不过 PGP 加密毕竟不是水货。

git hook

每次 commit 后自动 push 到 GitHub 上。

1
2
echo "git push -u origin main" >> .git/hooks/post-commit
chmod u+x .git/hooks/post-commit

mac 的 browser pass

1
2
echo "pinentry-program /usr/local/bin/pinentry-mac
" >> ~/.gnupg/gnupg.conf

然后可以在对应的网站用 command + L 自动输入密码了。

配置 Pass for iOS

记得在“系统设置-密码”里填充来源加上 pass,就可以享受免费的 1password 了