golang
cli

Go言語製CLIパスワードマネージャーを使う

はじめに

コマンドラインでパスワードの管理をしたかったので、Go言語製のCLIパスワードマネージャーのgopassを使います。
Go言語製なので、マルチプラットフォームで使用できます。

gopassでは、暗号化にgpgを使用しており、ファイル管理にgitを使用しています。

インストール

export GOPASS_VAR=1.3.2
wget https://www.justwatch.com/gopass/releases/${GOPASS_VAR}/gopass-${GOPASS_VAR}-linux-amd64.deb
sudo dpkg -i gopass-${GOPASS_VAR}-linux-amd64.deb
rm gopass-${GOPASS_VAR}-linux-amd64.deb
  • 必要なツールのインストール
apt-get install gnupg git xsel

セットアップ

gpgの鍵を作成

# 鍵作成
gpg2 --full-gen-key
# 公開鍵確認
gpg2 -k
# 秘密鍵確認
gpg2 -K

Autocompletion

  • gopass用のbash補完の設定をします。
    • タブ補完が効くようになります。
# .bash_aliasesに追加
source <(gopass completion bash)

gopass初期設定

  • パスワードの保存先を作成します。
    • 実体は~/.password-store
  • 作成したgpg鍵を選択します。
gopass init

---
# gitで管理する場合
$ which gpg2
/usr/bin/gpg2

gopass config gpg.program "/usr/bin/gpg2"
gopass git config user.signingkey "XXXXXXXX"
gopass git remote add origin git@example.com/pass.git
# 作成した公開鍵をコピーし、githubの自分のアカウントに追加
gpg --armor --export "XXXXXXXX" | xsel --clipboard --input

使い方

  • 基本的なコマンド
# パスワード作成
gopass insert foo/bar
# パスワード自動作成
gopass generate -n foo/bar 16
# パスワード編集
gopass edit foo/bar
# パスワードのリスト表示
gopass
# パスワード表示
gopass foo/bar
# パスワードをクリップボードにコピー
gopass -c foo/bar
# パスワード削除
gopass rm foo/bar
# ファイル検索
gopass search hoge
# ファイルの中身検索
gopass grep hoge
  • パスワードにkey-value形式で付加情報を保存
gopass insert foo/var baz
gopass edit foo/var baz
gopass foo/var
# 設定確認
$ gopass config 
askformore: false
autoimport: true
autosync: true
cliptimeout: 45
noconfirm: false
path: /home/mmm/.password-store
safecontent: false
version: 1.3.2
# 設定変更: gopass foo/varでパスワードを表示しない
gopass config safecontent true
  • 別のパスワードマネージャーからのマイグレート

既存のパスワードストアを使用する場合

既にパスワードストアがあり、それを使用する方法です。

  • githubからcloneする
gopass clone git@example.com/pass.git

復号化するために、使用しているgpgの秘密鍵をインポートする必要があります。

  • 公開鍵・秘密鍵のエクスポート
gpg -o pub.key --export <mail address>
gpg -o sec.key --export-secret-keys <mail address>
  • 公開鍵・秘密鍵のインポート
gpg --import pub.key
gpg --import --allow-secret-key-import sec.key

まとめ

Go言語で書かれているので、Windows、Ubuntu両方で利用できます。また、タブ補完が効いたり、クリップボードにコピーなど機能も豊富なので便利です。
ただ、Windowsの使用する場合、タブ補完の設定ができません。

※ gitを使用しているので変更履歴がわかってしまったり、github.comに置くと暗号化されているとはいえ危険なので管理方法には十分気をつける必要があります。

参考

他のオプションや詳しい説明はドキュメントを参考に