「Pass」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(Pkg/AUR テンプレートの更新)
(他言語へのリンクを追加)
 
(4人の利用者による、間の18版が非表示)
1行目: 1行目:
  +
{{Lowercase title}}
[[Category:セキュリティ]]
 
  +
[[Category:パスワードマネージャ]]
  +
[[Category:コンソールアプリケーション]]
  +
[[Category:OpenPGP]]
 
[[en:Pass]]
 
[[en:Pass]]
  +
[[zh-hans:Pass]]
[https://www.passwordstore.org/ pass] はコマンドライン用のシンプルなパスワードマネージャです。パスワードは単純なディレクトリツリー構造の gpg で暗号化されたファイルの中に保存されます。pass はシェルスクリプトであり {{Pkg|gnupg}}, {{Pkg|tree}}, {{Pkg|git}} などの既存のツールを利用します。
 
  +
[https://www.passwordstore.org/ オフィシャルウェブサイトから]:
  +
  +
:パスワード管理はシンプルで、Unix の哲学に従ったものであるべきです。pass では、各パスワードは、ファイル名がパスワードを必要とする Web サイトやリソースのタイトルである gpg 暗号化ファイルの中に存在します。これらの暗号化されたファイルは、意味のあるフォルダ階層に整理したり、コンピュータからコンピュータにコピーしたり、一般に、標準のコマンドラインファイル管理ユーティリティを使用して操作したりすることができます。
  +
  +
pass は、コマンドライン用の単純なパスワード マネージャーです。 pass は、[[GnuPG]]、{{Pkg|tree}}、[[Git]] などの既存のツールを利用するシェル スクリプトです。
   
 
== インストール ==
 
== インストール ==
   
{{Pkg|pass}} パッケージを[[pacman|インストール]]してください。
+
{{Pkg|pass}} パッケージを [[pacman|インストール]] してください。
   
{{Tip|任意で {{Pkg|qtpass}} パッケージをインストールすることで [[Qt]] 製の GUI を使うことができます。}}
+
任意で {{Pkg|qtpass}} パッケージをインストールすることで [[Qt]] 製の GUI を使うことができます。
   
 
== 基本的な使い方 ==
 
== 基本的な使い方 ==
42行目: 50行目:
   
 
エントリを選択することクリップボードにパスワードがコピーされます。大文字・小文字の区別などカスタマイズオプションについては {{ic|man dmenu}} を見てください。キーバインドを設定することでアプリケーションから簡単にパスワードが使えるようにすることもできます。
 
エントリを選択することクリップボードにパスワードがコピーされます。大文字・小文字の区別などカスタマイズオプションについては {{ic|man dmenu}} を見てください。キーバインドを設定することでアプリケーションから簡単にパスワードが使えるようにすることもできます。
  +
  +
== データ編成 ==
  +
  +
デフォルトでは、{{ic|pass insert}} で作成された資格情報ファイルにはパスワードのみが含まれます。ただし、いくつかのアプリケーションがユーザー名、URL などの詳細データを要求するため、それだけでは不十分な場合があります。
  +
コマンド {{ic|pass edit ''password_name''}} を使用して、既存のファイルを自由に編集できます。
  +
以下は、[https://www.passwordstore.org/ pass-project ページ] で提供されている推奨される組織スキームです。このスキームでオプション {{ic|-c}} または {{ic|--clip}} を使用すると、パスワードのみがコピーされます。
  +
  +
{{bc|
  +
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 への移行 ==
47行目: 69行目:
   
 
== 拡張 ==
 
== 拡張 ==
  +
 
バージョン 1.7 から、pass はコミュニティが開発した拡張をサポートしています。以下の拡張をインストールすることで pass の機能を強化することができます。
 
バージョン 1.7 から、pass はコミュニティが開発した拡張をサポートしています。以下の拡張をインストールすることで pass の機能を強化することができます。
   
* [https://github.com/roddhjav/pass-tomb pass-tomb] ({{aur|pass-tomb}})
+
* {{App|pass-tomb|[[tomb]] の中で暗号化されたパスワードストアのツリーを管理します。|https://github.com/roddhjav/pass-tomb|{{AUR|pass-tomb}}}}
  +
* {{App|pass-otp|ワンタイムパスワード (OTP) トークンのサポート。|https://github.com/tadfisher/pass-otp|{{Pkg|pass-otp}}}}
[[tomb]] の中で暗号化されたパスワードストアのツリーを管理します。
 
  +
* {{App|pass-import|他のパスワードマネージャからのインポートツール。|https://github.com/roddhjav/pass-import|{{AUR|pass-import}}}}
 
* [https://github.com/tadfisher/pass-otp pass-otp] ({{Pkg|pass-otp}})
+
* {{App|pass-update|簡単にパスワードをアップデート。|https://github.com/roddhjav/pass-update|{{AUR|pass-update}}}}
  +
* {{App|pass-audit|パスワード リポジトリを監査するための拡張機能。|https://github.com/roddhjav/pass-audit|{{AUR|pass-audit}}}}
ワンタイムパスワード (OTP) トークンのサポート。
 
  +
*{{App|pass-coffin|署名および暗号化された棺桶内のデータを非表示にするパスワード ストア拡張機能。|https://github.com/ayushnix/pass-coffin|{{AUR|pass-coffin}}}}
 
  +
*{{App|pass-tessen|fuzzy なデータ選択とパスワードストアからのコピーアンドペースト。|https://github.com/ayushnix/pass-tessen|{{AUR|pass-tessen}}}}
* [https://github.com/roddhjav/pass-import pass-import] ({{aur|pass-import}})
 
他のパスワードマネージャからのインポートツール。
 
 
* [https://github.com/roddhjav/pass-update pass-update] ({{aur|pass-update}})
 
簡単にパスワードをアップデート。
 
   
 
== 高度な使い方 ==
 
== 高度な使い方 ==
65行目: 84行目:
 
[[環境変数]]を使うことで ''pass'' が使用するパスワードストアのディレクトリや git ディレクトリを変更できます:
 
[[環境変数]]を使うことで ''pass'' が使用するパスワードストアのディレクトリや git ディレクトリを変更できます:
 
PASSWORD_STORE_DIR=/path/to/store
 
PASSWORD_STORE_DIR=/path/to/store
PASSWORD_STORE_GIT=/path/to/store
 
   
複数の ''pass'' リポジトリを使用する方法ついて詳しく [https://lists.zx2c4.com/pipermail/password-store/2016-November/002463.html こちらのリンク] を参照してください。
+
これを使用して複数のパス リポジトリをサポートする方法の詳細については[https://lists.zx2c4.com/pipermail/password-store/2016-November/002463.html このリンク] を参照してください。
  +
次の {{ic|pw()}} エイリアスの例では、名前付きデータベースの最初の行をクリップボードに送信してから、2 行目を 5 秒後に送信し、最後に OTP コードをその 5 秒後に送信します。パスワードが 1 行目に、ユーザー名が 2 行目にあり、[https://github.com/google/google-authenticator/wiki/Key-Uri-Format 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 コンテキスト ==
75行目: 100行目:
 
{{ic|~/.bashrc}} に以下のエイリアスを追加してください:
 
{{ic|~/.bashrc}} に以下のエイリアスを追加してください:
   
alias passred="PASSWORD_STORE_DIR=~/.pass/red PASSWORD_STORE_GIT=~/.pass/red pass"
+
alias passred="PASSWORD_STORE_DIR=~/.pass/red pass"
alias passblue="PASSWORD_STORE_DIR=~/.pass/blue PASSWORD_STORE_GIT=~/.pass/blue pass"
+
alias passblue="PASSWORD_STORE_DIR=~/.pass/blue pass"
   
 
{{Pkg|bash-completion}} をインストールして {{ic|~/.bash_completion}} に以下を追加してください:
 
{{Pkg|bash-completion}} をインストールして {{ic|~/.bash_completion}} に以下を追加してください:
91行目: 116行目:
   
 
{{ic|~/.pass/red}} と {{ic|~/.pass/blue}} を初期化したら {{ic|passred}} と {{ic|passblue}} エイリアスで2つの pass コンテキストを交互に使うことができます。コンテキストは好きなだけ追加できます。
 
{{ic|~/.pass/red}} と {{ic|~/.pass/blue}} を初期化したら {{ic|passred}} と {{ic|passblue}} エイリアスで2つの pass コンテキストを交互に使うことができます。コンテキストは好きなだけ追加できます。
 
== GUI ==
 
 
{{Pkg|qtpass}} パッケージをインストールしてください。
 
   
 
== Git の統合 ==
 
== Git の統合 ==
127行目: 148行目:
   
 
機能させるには {{ic|pass insert --multiline}} を使って複数行のパスワードストアエントリを作成する必要があります。
 
機能させるには {{ic|pass insert --multiline}} を使って複数行のパスワードストアエントリを作成する必要があります。
  +
  +
=== GnuPG と組み合わせたパス用の中央 Git サーバー (SSH の例) ===
  +
  +
パス用の中央 Git サーバーをセットアップすることにより、パスワード管理システムをセットアップできます。これにより、複数のクライアント環境を介して中央パスワードリポジトリを同期できます。
  +
  +
==== サーバーにパス用のベア Git リポジトリをインストールする ====
  +
  +
サーバーで {{ic|git init --bare ~/.password-store}} を実行して、プッシュ先のベアリポジトリを作成します。
  +
  +
==== 認証された ssh 公開鍵のインポート ====
  +
  +
[[SSH 鍵#リモートサーバーに公開鍵をコピー]] を参照してください。
  +
  +
==== クライアント側 ====
  +
  +
このセクションでは、GnuPG が構成されており、パスワードを暗号化するためのキーペアがあることを前提としています。
  +
ローカルクライアントで、クライアントにローカル パスワードストアがあることを確認してから、Git を介してローカル変更の管理を有効にし、リモート Git リポジトリを追加して、ローカル パス履歴をプッシュします。
  +
  +
{{bc|code=# 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
  +
}}
  +
  +
これで、{{ic|pass}} で始まる標準の Git コマンドを使用できるようになりました。例:{{ic|pass git push}} または {{ic|pass git pull}} pass を使用してパスワードストアを変更すると、自動的にコミットが作成されます。
  +
  +
== トラブルシューティング ==
  +
=== Encryption failed: Unusable public key ===
  +
  +
新しいエントリを挿入しようとすると、次のエラーが発生する可能性があります。
  +
  +
{{hc|$ 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" 以外に設定されている場合に発生します。 {{ic|pass}} に使用されるキーを編集して、その信頼レベルを "ultimate" に設定します。
  +
  +
{{hc|$ gpg --edit-key ''your_key_id''|
  +
> trust
  +
> 5
  +
}}
   
 
== 参照 ==
 
== 参照 ==
 
* [http://blog.sanctum.geek.nz/linux-crypto-passwords/ A more comprehensive pass tutorial]
 
* [http://blog.sanctum.geek.nz/linux-crypto-passwords/ A more comprehensive pass tutorial]
  +
* [https://www.passwordstore.org/ pass home page]
  +
* [https://www.passwordstore.org/#other List of Compatible clients and possibilities for migration to pass]

2023年12月27日 (水) 00:07時点における最新版

オフィシャルウェブサイトから:

パスワード管理はシンプルで、Unix の哲学に従ったものであるべきです。pass では、各パスワードは、ファイル名がパスワードを必要とする Web サイトやリソースのタイトルである gpg 暗号化ファイルの中に存在します。これらの暗号化されたファイルは、意味のあるフォルダ階層に整理したり、コンピュータからコンピュータにコピーしたり、一般に、標準のコマンドラインファイル管理ユーティリティを使用して操作したりすることができます。

pass は、コマンドライン用の単純なパスワード マネージャーです。 pass は、GnuPGtreeGit などの既存のツールを利用するシェル スクリプトです。

インストール

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 を見てください。キーバインドを設定することでアプリケーションから簡単にパスワードが使えるようにすることもできます。

データ編成

​ デフォルトでは、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-tombtomb の中で暗号化されたパスワードストアのツリーを管理します。
https://github.com/roddhjav/pass-tomb || pass-tombAUR
  • pass-otp — ワンタイムパスワード (OTP) トークンのサポート。
https://github.com/tadfisher/pass-otp || pass-otp
  • pass-import — 他のパスワードマネージャからのインポートツール。
https://github.com/roddhjav/pass-import || pass-importAUR
  • pass-update — 簡単にパスワードをアップデート。
https://github.com/roddhjav/pass-update || pass-updateAUR
  • pass-audit — パスワード リポジトリを監査するための拡張機能。
https://github.com/roddhjav/pass-audit || pass-auditAUR
  • pass-coffin — 署名および暗号化された棺桶内のデータを非表示にするパスワード ストア拡張機能。
https://github.com/ayushnix/pass-coffin || pass-coffinAUR
  • pass-tessen — fuzzy なデータ選択とパスワードストアからのコピーアンドペースト。
https://github.com/ayushnix/pass-tessen || pass-tessenAUR

高度な使い方

環境変数を使うことで 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

参照