pass

提供: ArchWiki
2022年12月23日 (金) 20:18時点におけるKgx (トーク | 投稿記録)による版 (→‎高度な使い方: 情報を更新)
ナビゲーションに移動 検索に移動

pass はコマンドライン用のシンプルなパスワードマネージャです。パスワードは単純なディレクトリツリー構造の gpg で暗号化されたファイルの中に保存されます。pass はシェルスクリプトであり GnuPG, tree, Git などの既存のツールを利用します。

インストール

pass パッケージをインストールしてください。

任意で qtpass パッケージをインストールすることで Qt 製の GUI を使うことができます。

基本的な使い方

ノート: pass を使用するには GnuPG#基本的な鍵の管理 に書かれているようにして gnupg をセットアップする必要があります。

パスワードストアを初期化:

$ 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
ノート: 中クリックによる貼り付けを使いたい場合はシェルの設定ファイルに次のように追加してください: export PASSWORD_STORE_X_SELECTION=primary

pass には検索やコピーを楽にする dmenu ラッパーが付属しています。使用するには、dmenu をインストールして次のコマンドを実行:

$ passmenu

エントリを選択することクリップボードにパスワードがコピーされます。大文字・小文字の区別などカスタマイズオプションについては man dmenu を見てください。キーバインドを設定することでアプリケーションから簡単にパスワードが使えるようにすることもできます。

Data organization

​ By default, the credential file created with pass insert will only contain your password. However, it may not be enough since several applications ask for detail data like username, url, etc. You can edit an existing file the way you want with command pass edit password_name. Below is the preferred organizational scheme provided by pass-project page. When using the option -c or --clip with this scheme, only the password will be copied. ​

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 の機能を強化することができます。

tomb の中で暗号化されたパスワードストアのツリーを管理します。

ワンタイムパスワード (OTP) トークンのサポート。

他のパスワードマネージャからのインポートツール。

簡単にパスワードをアップデート。

高度な使い方

環境変数を使うことで 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 を初期化したら passredpassblue エイリアスで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

参照