Why?

引用官網的說法,pass 是一套 「標準 unix 密碼管理工具」(the standard unix password manager),簡單好用。雖然 1Password 我已經設定用 Dropbox 同步,應該還算安全,不過多個開源選擇也好。

pass 也有社群版套件,在手機上也可以用,引用一下官網:

The community has even produced a cross-platform GUI client, an Android app, an iOS app, a Firefox plugin, a Windows client, a pretty Python QML app, a nice Go GUI app, an interactive console UI, Alfred integration (1) (2) (3), a dmenu script, OS X integration, git credential integration, and even an emacs package.

安裝 pass

在 macOS 上十分容易,先裝好 Homebrew,然後:

brew install pass

pass 也提供 shell completion 可以用,bash 預設就會裝好了,fish 需要在 ~/.config/fish/config.fish 裡加上:

source /usr/local/share/fish/vendor_completions.d/pass.fish

設定 pass

完成之後我們要看一下有沒有 gpg 金鑰,如果沒有的話要新增個

gpg --gen-key # 產生 gpg key

記住產生時輸入的 key phrase,每次解鎖密碼都會用到(就跟 1Password 一樣)。用 gpg --list-keys 查看剛剛產生的 key,輸出像這樣:

/Users/username/.gnupg/pubring.gpg
-------------------------------
pub   2048R/A534B400 2016-08-18
uid                  My Name <your_email@gmail.com>
sub   2048R/E1001945 2016-08-18

public id 就是 A534B400,拿這組 id 來初始化 pass

pass init A534B400

完成!之後就可以用 pass 指令管理密碼了,可以下一些測試的指令試試,比如 insert 一組 foo 的密碼:

pass insert foo

然後顯示 foo 的密碼

pass show foo

由 1Password 匯入

官網上就寫上匯入 1password 的 ruby script 😍 ,直接使用就行了。在 1Password 匯出 txt 時,記得勾選 Include Column Labels,如下圖:

1password-export-option

把匯出的檔案和匯入腳本準備好,跑一下:

ruby 1password2pass.rb /path/to/1password_exported.txt

密碼就通通匯入至 ~/.password-store 底下囉~

基礎使用

pass 的管理可以說是相當自由,通通放在 ~/.password-store 目錄,底下可以建立任意的目錄分類,或是乾脆不分 XD

一些基本指令:

pass show PROFILE # 印出 PROFILE 的密碼
pass -c PROFILE # 複製 PROFILE 的密碼到剪貼簿,如果不想印到 terminal
pass edit PROFILE # 編輯密碼
pass ls # 列出所有密碼設定檔

我做了以下 alias,方便快速密碼搜尋:

alias passgrep="pass ls | grep -i"

就可以用 passgrep 來搜尋現有設定檔了。

Pass for iOS

pass

pass 也有 iOS 的客端軟體可以用,還不用 jailbreak Q_Q 照著 wiki 設定就可以了,我自己在 GitHub 開一個 private repo,然後設定 ssh key,再由手機 pull 下來。下面秀一些截圖:

passforios-1

passforios-2

passforios-3

用起來就跟原本 1Password 有 87% 像啦 XD

(完)