该存储库包含一个 Chrome 扩展,它将 pass 密码管理器与 Chrome 集成。
此存储库中有两个文件夹,其中包含:
要使用该扩展,您需要在 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
环境变量以指向密码存储位置。
该插件假设每个密码路径的最后两部分遵循以下结构:
[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]
您的路径可以包含任意多个部分,只要最后两个部分遵循上述结构即可。并且[Service URL]部分必须与您正在查看的页面的URL匹配,因为它用于从商店中选择相应的密码。
如果 pass 文件配置了 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
,这是用于登录控制台的 URL。pass edit ...
编辑密码 GPG 文件,并在密码行后的任意位置添加两个键/值对:username=[IAM username]
account=[12 digit AWS account id or alias]
username
填充用户名字段,使用account
填充帐户 ID 字段,并使用解密的password
填充密码字段。chrome-pass 扩展在 pass gpg 文件中查找任何键/值对,并用相应的value
填充 ID 等于key
的任何 HTML 输入字段。
此外,如果该value
设置为以下特殊占位符值,它们将替换为:
pass__user
:替换为从 pass 路径最后部分提取的[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 帐户通行证文件中将指示 chrome-pass 扩展程序使用用户名填充任何 id 为account_name_text_field
HTML 输入字段,并使用解密的密码填充任何 id 为password_text_field
HTML 输入字段。
这仅适用于开发人员或希望在将密码信任给未知人员编写的某些扩展之前查看源代码的人。
在 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 版本使用 setuptools 而不是 distutils 来打包和安装本机应用程序。安装时可能会出现如下错误:
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...
文件和目录。 如果由于某种原因扩展程序无法从您的密码存储中获取用户名列表,最可能的原因是:
已发现 chrome_pass 应用程序无法使用某些较新版本的 python-gnupg 解密 gpg 密码。当使用 Ubuntu 16.04LTS 中默认找到的 gnupg 模块版本 0.3.9 时,我可以验证该插件是否正常工作。
有关详细信息,请参阅相关问题:Github。
如果从终端启动 chrome 时该插件可以工作,但从 Spotlight 或任何其他启动器启动时该插件不起作用,请确保启动器正确设置了 PATH 环境变量。
有关详细信息,请参阅相关问题:Github