passは、コマンドラインで使えるシンプルなパスワードマネージャーです。
依存関係
$ apt-cache depends pass
pass
Depends: gnupg
Depends: tree
Recommends: git
Recommends: qrencode
Recommends: xclip
Recommends: wl-clipboard
Suggests: libxml-simple-perl
Suggests: perl
Suggests: <python>
Suggests: python3
Suggests: ruby
基本はgnupgとtreeだけ入っていれば使えるというシンプルさ。
インストール
LinuxやMacならほとんどの場合、標準のパッケージマネージャーに入っているよう。
UbuntuやDebian系では、
$ sudo apt install pass
基本的な使い方
0.gpg鍵の作成
$ gpg --gen-key
暗号化に使うgpg鍵を生成しておく(既存のものを流用してもよい)。
1.初期化
$ pass init <gpg-id>
<gpg-id>はgpg鍵生成時に入力したid、もしくはメールアドレスに置き換えること。
これでパスワード管理用ディレクトリが生成される(デフォルトだと~/.password-store
)
2.パスワードの保存
$ pass insert <pass-name>
<pass-name>の部分は、設定するパスワードの名前に置き換えること。対話的にパスワードを登録できる。
名前に/
を使うことで階層構造も表現できる(たとえば、passlist/pass
ならpasslistフォルダとpassという名前のパスワードを保存する)
pass
で階層構造を一覧できる。
$ pass
Password Store
├── pass
└── passlist
├── pass2
└── pass3
ランダムなパスワードを生成したいなら、
$ pass generate -n <pass-name> [pass-length]
[pass-length]はパスワードの長さ(省略可能、デフォルトは25文字)。アルファベット(大文字小文字)+数字のランダムなパスワードを生成して保存する。
-n
オプションをつけないと記号が含まれるパスワードが生成されるが、残念ながら、使えない可能性の高い記号を含んでしまう('とか`とか)のでオススメしない。
3.パスワードの表示
$ pass <pass-name>
このとき、gpg鍵生成時にパスワードを設定していれば、パスワードの入力を求められる。(gpg-agentがパスワードをキャッシュしてくれるので、一度入力したら10分間は再度入力しなくて良い)
-c
オプションをつければ、パスワードはクリップボードにコピーされ、一定時間後に自動で削除される(xclipが必要)。
$ pass -c <pass-name>
-q
を指定するとqrコードで出力される(qrencodeが必要)。
$ pass -q <pass-name>
Gitによる同期
Gitを使うことでバックアップ・共有が可能。
共有リポジトリ作成(サーバー上などで)
$ git init --bare --shared
ローカル側での設定
$ pass git init
$ pass git remote add origin <共有リポジトリURL>
$ pass git push -u --all
git add
やgit commit
は自動でやってくれるので不要だが、それ以外は基本的なGitの使い方と同じ。
設定後は、ローカルで更新するたびにpass git push
で同期し、別のPCから更新した場合はpass git pull
で変更を取り込んでいけば良い。
参考リンク
公式サイト : https://www.passwordstore.org/
(WireGuardの開発者さんと同じ人が開発してるみたいです)
man : https://git.zx2c4.com/password-store/about/
ArchWiki : https://wiki.archlinux.jp/index.php/Pass