pass
- パスワード管理はシンプルで、Unix の哲学に従ったものであるべきです。pass では、各パスワードは、ファイル名がパスワードを必要とする Web サイトやリソースのタイトルである gpg 暗号化ファイルの中に存在します。これらの暗号化されたファイルは、意味のあるフォルダ階層に整理したり、コンピュータからコンピュータにコピーしたり、一般に、標準のコマンドラインファイル管理ユーティリティを使用して操作したりすることができます。
pass は、コマンドライン用の単純なパスワード マネージャーです。 pass は、GnuPG、tree、Git などの既存のツールを利用するシェル スクリプトです。
目次
インストール
任意で qtpass パッケージをインストールすることで Qt 製の GUI を使うことができます。
基本的な使い方
パスワードストアを初期化:
$ pass init <gpg-id or email>
パスワードを挿入、わかりやすい階層名を指定する:
$ pass insert archlinux.org/wiki/username
パスワードストアを確認:
$ pass
Password Store └── archlinux.org └── wiki └── username
新しいランダムなパスワードを生成、<n>
は生成するパスワードの長さ (数字) に置き換えてください:
$ pass generate archlinux.org/wiki/username <n>
パスワードを再取得、gpg のパスワードの入力を求められます:
$ pass archlinux.org/wiki/username
Xorg を使っていて xclip をインストールしている場合、以下のコマンドで取得したパスワードを一時的にクリップボードにコピーできます:
$ pass -c archlinux.org/wiki/username
pass には検索やコピーを楽にする dmenu ラッパーが付属しています。使用するには、dmenu をインストールして次のコマンドを実行:
$ passmenu
エントリを選択することクリップボードにパスワードがコピーされます。大文字・小文字の区別などカスタマイズオプションについては man dmenu
を見てください。キーバインドを設定することでアプリケーションから簡単にパスワードが使えるようにすることもできます。
データ編成
デフォルトでは、pass insert
で作成された資格情報ファイルにはパスワードのみが含まれます。ただし、いくつかのアプリケーションがユーザー名、URL などの詳細データを要求するため、それだけでは不十分な場合があります。
コマンド pass edit password_name
を使用して、既存のファイルを自由に編集できます。
以下は、pass-project ページ で提供されている推奨される組織スキームです。このスキームでオプション -c
または --clip
を使用すると、パスワードのみがコピーされます。
YwrZSNH35z164ym9pI URL: *.amazon.com/* Username: AmazonianChicken@example.com Secret Question 1: What is your childhood best friend's most bizarre superhero fantasy? Oh god, Amazon, it's too awful to say... Phone Support PIN #: 84719
pass への移行
pass のプロジェクトページ に他のプログラムからパスワードをインポートするためのスクリプトが複数記載されています。
拡張
バージョン 1.7 から、pass はコミュニティが開発した拡張をサポートしています。以下の拡張をインストールすることで pass の機能を強化することができます。
- pass-tomb — tomb の中で暗号化されたパスワードストアのツリーを管理します。
- pass-otp — ワンタイムパスワード (OTP) トークンのサポート。
- pass-import — 他のパスワードマネージャからのインポートツール。
- pass-update — 簡単にパスワードをアップデート。
- pass-audit — パスワード リポジトリを監査するための拡張機能。
- pass-coffin — 署名および暗号化された棺桶内のデータを非表示にするパスワード ストア拡張機能。
- pass-tessen — fuzzy なデータ選択とパスワードストアからのコピーアンドペースト。
高度な使い方
環境変数を使うことで pass が使用するパスワードストアのディレクトリや git ディレクトリを変更できます:
PASSWORD_STORE_DIR=/path/to/store
これを使用して複数のパス リポジトリをサポートする方法の詳細については、このリンク を参照してください。
次の pw()
エイリアスの例では、名前付きデータベースの最初の行をクリップボードに送信してから、2 行目を 5 秒後に送信し、最後に OTP コードをその 5 秒後に送信します。パスワードが 1 行目に、ユーザー名が 2 行目にあり、OTP URI が名前付きデータベースのどこかに存在すると仮定すると、ネット効果は、利用可能な(ブラウザなど)入力フィールドに連続してプライマリペーストするために ユーザー名パスワードOTPコード を渡します。:
pw() { export PASSWORD_STORE_CLIP_TIME=8 export PASSWORD_STORE_X_SELECTION=primary pass -c2 $1; sleep 5; pass -c $1; sleep 5; pass otp -c $1; exit }
複数の pass コンテキスト
エイリアスを使うことで様々な pass コンテキストを設定できます。異なるチームで作業を行う場合などに有用です。
~/.bashrc
に以下のエイリアスを追加してください:
alias passred="PASSWORD_STORE_DIR=~/.pass/red pass" alias passblue="PASSWORD_STORE_DIR=~/.pass/blue pass"
bash-completion をインストールして ~/.bash_completion
に以下を追加してください:
source /usr/share/bash-completion/completions/pass _passred(){ PASSWORD_STORE_DIR=~/.pass/red/ _pass } complete -o filenames -o nospace -F _passred passred _passblue(){ PASSWORD_STORE_DIR=~/.pass/blue/ _pass } complete -o filenames -o nospace -F _passblue passblue
~/.pass/red
と ~/.pass/blue
を初期化したら passred
と passblue
エイリアスで2つの pass コンテキストを交互に使うことができます。コンテキストは好きなだけ追加できます。
Git の統合
git
の認証ヘルパーとして pass
を使うことができます。pass-git-helperAUR または pass-git-helper-gitAUR パッケージをインストールしてください。
使用方法
詳しい使い方は github の README ファイル に書かれています。
git
の設定
以下のコマンドを実行して git の認証ヘルパーとして pass-git-helper
をインストール:
$ git config --global credential.helper /usr/bin/pass-git-helper
マッピングファイル
~/.config/pass-git-helper/git-pass-mapping.ini
ファイルを作成してください。git のリモートホストを pass
データベースにマッピングできます。フォーマットは以下の通りです:
[github.com] target=dev/github [*.fooo-bar.*] target=dev/fooo-bar
上記の通りホスト部にはワイルドカードを使うことができます。
パスワードストアレイアウト
pass と同じように、パスワードストアエントリの最初の行にパスワードを指定します。二行目はユーザー名として解釈されます。
機能させるには pass insert --multiline
を使って複数行のパスワードストアエントリを作成する必要があります。
GnuPG と組み合わせたパス用の中央 Git サーバー (SSH の例)
パス用の中央 Git サーバーをセットアップすることにより、パスワード管理システムをセットアップできます。これにより、複数のクライアント環境を介して中央パスワードリポジトリを同期できます。
サーバーにパス用のベア Git リポジトリをインストールする
サーバーで git init --bare ~/.password-store
を実行して、プッシュ先のベアリポジトリを作成します。
認証された ssh 公開鍵のインポート
SSH 鍵#リモートサーバーに公開鍵をコピー を参照してください。
クライアント側
このセクションでは、GnuPG が構成されており、パスワードを暗号化するためのキーペアがあることを前提としています。 ローカルクライアントで、クライアントにローカル パスワードストアがあることを確認してから、Git を介してローカル変更の管理を有効にし、リモート Git リポジトリを追加して、ローカル パス履歴をプッシュします。
# Create local password store pass init <gpg key id> # Enable management of local changes through Git pass git init # Add the the remote git repository as 'origin' pass git remote add origin user@server:~/.password-store # Push your local pass history pass git push -u --all
これで、pass
で始まる標準の Git コマンドを使用できるようになりました。例:pass git push
または pass git pull
pass を使用してパスワードストアを変更すると、自動的にコミットが作成されます。
トラブルシューティング
Encryption failed: Unusable public key
新しいエントリを挿入しようとすると、次のエラーが発生する可能性があります。
$ pass insert archlinux.org/wiki/username
Enter password for archlinux.org/wiki/username: Retype password for archlinux.org/wiki/username: gpg: XXXXXXXXX: There is no assurance this key belongs to the named user gpg: [stdin]: encryption failed: Unusable public key Password encryption aborted.
これは、GnuPG キーの信頼レベルが "ultimate" 以外に設定されている場合に発生します。 pass
に使用されるキーを編集して、その信頼レベルを "ultimate" に設定します。
$ gpg --edit-key your_key_id
> trust > 5