このリポジトリには、パス パスワード マネージャーを Chrome と統合する Chrome 拡張機能が含まれています。
このリポジトリには、次のものが含まれる 2 つのフォルダーがあります。
拡張機能を使用するには、chrome または chromium ブラウザと Python ネイティブ アプリケーション (chrome_pass) に拡張機能をインストールする必要があります。
これらの手順は、Ubuntu 24.04 および Debian 12 (bookworm) でテストされています。
sudo apt-get install pass python3 python3-pip
pip install --user chrome-pass==1.0.1
chrome_pass install
Chrome ウェブストアから拡張機能を入手します。
この拡張機能のコードの複雑さを軽減するために、パスワード ストアの構造に関していくつかの前提条件があります。この拡張機能がパスワードを一覧表示して復号化できるようにするには、次の前提条件に従う必要があります。
この拡張機能は、パスワード ストアがホーム ディレクトリ内の.password-storeフォルダー内にあることを前提としています。
$HOME/.password-store
パスワード ストアが別の場所にある場合は、シンボリック リンクを使用してこの制限を回避するか、パスワード ストアの場所を指すようにPASSWORD_STORE_DIR
環境変数を設定してみてください。
このプラグインは、各パスワード パスの最後の 2 つの部分が次の構造に従っていることを前提としています。
[Service URL]/[Username]
たとえば、いくつかの Gmail アカウントと Amazon アカウントを保持するには、次のようにします。
~/.password-store/
├── mail.google.com
│ ├── me@gmailcom
│ ├── [email protected]
│ └── [email protected]
└── Amazon
├── www.amazon.com
│ ├── [email protected]
│ └── [email protected]
└── www.amazon.co.jp
├── [email protected]
└── [email protected]
最後の 2 つが上記の構造に従っている限り、パスには必要な数の部分を含めることができます。また、[サービス URL] 部分は、ストアから対応するパスワードを選択するために使用されるため、表示しているページの URL と一致する必要があります。
パス ファイルに pass-otp が設定されている場合、chrome-pass は TOTP コードを生成し、フォーム内の数値テキスト入力にそのコードを入力します。
IAM アカウントの場合、ログイン ユーザーとパスワードだけでなく、アカウントの 12 桁の ID またはエイリアスも必要です。これらのアカウントの場合、chrome-pass にはログイン ページにすべての情報を入力できるようにするための特別なロジックがあります。
Password Store
├── signin.aws.amazon.com
│ ├── [email protected]
│ ├── [email protected]
│ ├── 183413992345
│ ├── 550312930456-username1
│ ├── 550312930456-username2
│ └── accountalias
signin.aws.amazon.com
である必要があります。pass edit ...
使用してパスワード GPG ファイルを編集し、パスワード行の後の任意の場所に 2 つのキーと値のペアを追加します。username=[IAM username]
account=[12 digit AWS account id or alias]
username
を使用してユーザー名フィールドを入力し、 account
使用してアカウント ID フィールドを入力し、復号化されたpassword
使用してパスワードフィールドを入力します。chrome-pass 拡張機能は、パス gpg ファイル内のキーと値のペアを検索し、 key
と等しい ID を持つ HTML 入力フィールドに対応するvalue
を入力します。
さらに、 value
次の特別なプレースホルダー値に設定されている場合、それらは次のように置き換えられます。
pass__user
: パスパスの最後の部分から抽出した[Username]
に置き換えます。pass__password
: 復号化されたパスパスワードに置き換えられます。pass__otpauth
: 利用可能な場合は pass-otp コードに置き換えられます。 注記
特殊なプレースホルダー キーには、二重アンダースコア__
文字が含まれます。
これにより、chrome-pass は Apple ID ログイン フォームなどの一部の非標準ログイン フォームで動作できるようになります。このログイン ページにはフォーム要素がなく、JavaScript に依存して動作します。幸いなことに、ユーザー名とパスワードの HTML 入力フィールドには明確に定義された ID があり、それを機能させるために chrome-pass ファイルに設定できます。
# chrome-pass for Apple ID login from.
account_name_text_field=pass__user
password_text_field=pass__password
上記のキーと値のペアを Apple アカウント パス ファイルに追加すると、ID がaccount_name_text_field
の HTML 入力フィールドにユーザー名を入力し、ID がpassword_text_field
の HTML 入力フィールドに復号化されたパスワードを入力するように、chrome-pass 拡張機能に指示します。
これは開発者のみ、または未知の人物が作成した拡張機能にパスワードを信頼する前にソース コードを確認したい人向けです。
Chrome 内で URL chrome://extensions を開き、開発者モードを確認してから、 [解凍された拡張機能を読み込む] ボタンを使用して拡張機能フォルダーへのパスを読み込みます。拡張機能が Chrome に読み込まれたら、拡張機能 IDをメモします。
次に、 chrome_passラッパー スクリプトをインストールし、ネイティブ ホスト アプリケーション マニフェストをインストールする必要があります。
cd application
pip install --upgrade setuptools build --user
python -m build
pip install . --user
chrome_pass install [extension ID]
パスファイル内のotpoauth
カスタムフィールドをpass__otpauth
に置き換えます。 otpoauth
カスタム フィールドは削除され、将来のリリースでは機能しなくなります。
ネイティブ アプリケーションと拡張機能 0.5.1 は、以前のバージョンと互換性がありません。正しく動作するには、両方が 0.5.1 であることを確認してください。
nativePass
スクリプトの名前がchrome_pass
に変更されました。
chrome-pass のバージョン 0.5.0 は、distutils の代わりに setuptools を使用してネイティブ アプリケーションをパッケージ化してインストールします。インストール時に次のようなエラーが発生する場合があります。
ERROR: Cannot uninstall 'chrome-pass'. It is a distutils installed project and
thus we cannot accurately determine which files belong to it which would lead
to only a partial uninstall.
この状況では、古いバージョンのパッケージを手動でアンインストールする必要があります。
nativePass
スクリプトを削除します。 which nativePass
使用して見つけます。chrome_pass-0.X.0...
ファイルとディレクトリを削除します。 何らかの理由で拡張機能がパスワード ストアからユーザー名のリストを取得できない場合、最も考えられる理由は次のとおりです。
一部の新しいバージョンの python-gnupg では、chrome_pass アプリケーションが gpg パスワードを復号化できないことが判明しました。 Ubuntu 16.04LTS にデフォルトで含まれる gnupg モジュール バージョン 0.3.9 を使用すると、プラグインが問題なく動作することを確認できます。
詳細については、Github の関連問題を参照してください。
ターミナル内から Chrome を起動した場合にはプラグインが機能するが、Spotlight またはその他のランチャーから起動した場合には機能しない場合は、PATH 環境変数がランチャーによって正しく設定されていることを確認してください。
詳細については、Github で関連する問題を参照してください。