跳转到主要内容

pass(标准Unix密码管理器)的前端

项目描述

https://travis-ci.org/xolox/python-qpass.svg?branch=master https://coveralls.io/repos/xolox/python-qpass/badge.svg?branch=master

qpass程序是pass(标准Unix密码管理器)的一个简单的命令行前端。它使得快速找到并复制您在~/.password-store中的特定密码到剪贴板变得非常容易。该软件包目前已在cPython 2.6、2.7、3.4、3.5、3.6和PyPy(2.7)上进行测试。它旨在在Linux以及macOS上运行,尽管它只在Linux上进行了测试。

安装

qpass软件包可在PyPI上找到,这意味着安装应该像

$ pip install qpass

安装Python包的方法有很多(例如,针对每个用户的站点包目录虚拟环境或仅安装到系统范围内),我无意在这里展开讨论,所以如果你感到害怕,请在返回这些说明之前了解你的选项;-)

用法

使用qpass包有两种方式:作为命令行程序qpass和作为Python API。有关Python API的详细信息,请参阅Read the Docs上的API文档。以下是命令行界面的说明。

命令行

用法: qpass [OPTIONS] 关键字...

搜索密码存储库中的给定关键字或模式,并将匹配条目的密码复制到剪贴板。当有多个条目匹配时,您将被提示选择要复制的密码。

如果您提供了多个关键字,则所有给定关键字都必须匹配,换句话说,您正在执行AND搜索而不是OR搜索。

除了匹配关键字外,您还可以输入密码名称中的一些字符,只要这些字符的顺序正确即可。以下是一些具体示例来说明这一点

  • 模式“pe/zbx”将匹配名称“Personal/Zabbix”。

  • 模式“ba/cc”将匹配名称“Bank accounts/Creditcard”。

当密码被复制到剪贴板时,第一行之后的任何文本将在终端上显示,以便分享有关密码条目的任何附加详细信息(例如相关的用户名或电子邮件地址)。-q--quiet选项将抑制此文本。

支持选项

选项

描述

-e--edit

编辑匹配条目而不是将其复制到剪贴板。

-l--list

将匹配条目列在标准输出上。

-n--no-clipboard

不要将匹配条目的密码复制到剪贴板,而是显示在终端上(默认情况下,密码将复制到剪贴板但不在终端上显示)。

-p--password-store=DIRECTORY

DIRECTORY中搜索密码存储库。如果没有提供此选项,则使用$PASSWORD_STORE_DIR环境变量查找密码存储库。如果没有设置此环境变量,则使用目录~/.password-store

您可以使用-p--password-store选项多次来同时搜索多个密码存储库。不会区分不同密码存储库中的密码,因此密码名称需要可识别且唯一。

-f--filter=PATTERN

不要显示附加详细信息中与不区分大小写的正则表达式匹配的行PATTERN。这可以用于防止在终端上泄露敏感信息。您可以多次使用此选项。

-x--exclude=GLOB

忽略名称与给定的GLOB文件名模式匹配的密码。此参数可以重复使用以添加多个排除模式。

-v--verbose

增加日志详细程度(可以重复)。

-q--quiet

降低日志详细程度(可重复使用)。

-h--help

显示此信息并退出。

为什么使用pass?

在2016年,我在寻找一种方法,在笔记本电脑和智能手机之间安全地共享密码和其他机密。我不会用我寻找终极密码管理器的全部细节来烦扰你,但我想强调几个关于pass的重要观点。

GPG加密

GPG是计算机安全的基础,并且它是开源的。这意味着它接受相当多的同行评审,这使得我更容易信任它(相对于自制的加密)。因为pass使用GPG来实现其加密,所以我的信任直接扩展到pass。当然,我在开始使用pass之前就有多年的GPG经验也有帮助 :-)。

Git版本控制

Gitpass中的集成使得在版本控制下管理您的密码和在不同系统之间同步密码变得非常容易。《Git》是一个出色的版本控制系统,虽然我有时会因《git pull》自动合并而感到烦恼,但它实际上是一个密码存储的完美默认选择。作为额外的奖励,您有您对密码所做的每一次更改的历史记录。

SSH安全传输

我现在已经使用SSH通过安全连接远程系统很长时间了,所以我非常舒适地设置并正确地保护SSH服务器。在pass的情况下,我使用SSH通过一个托管私人Git仓库的中央服务器在我笔记本电脑和智能手机之间同步密码。

历史

开始使用pass不久后,我意识到我需要一个快速方便的方法来复制任何给定的密码到剪贴板,这比pass程序更智能。

我尝试了几个GUI前端,但老实说,每一个都感觉笨拙,我想,通过我的系统管理员和程序员的职业,我已经习惯于喜欢命令行界面而不是图形用户界面 :-)。有几周,我尝试了upass(一个有点花哨的命令行界面),但由于缺乏简单的无大小写搜索等功能,我停止了使用它。

出于挫败感,我编写了一个简单的Python脚本,它会对我的密码执行无大小写子串搜索,当有确切的一个匹配时,会将密码复制到剪贴板。我将Python脚本命名为qpass,认为它和upass在目的上相似,但对我来说使用起来要快得多,所以用q(快速)而不是用u

使用那个Python脚本一段时间后,我发现无大小写子串搜索仍然迫使我指定长而详细的模式才能获得唯一的匹配。通过尝试其他方法来匹配唯一的密码,我想到了对密码的路径名(包括目录组件)执行“模糊匹配”。自那时起,这种模式如e/z匹配Personal/Zabbix的模糊搜索已经成为我与我密码存储交互的主要方式。

支持多个密码存储

pass 的一个优点是其与 git 的集成,这使得在多个设备[1]或人员[2]之间共享密码库变得容易。这种用法使得您最终可能会使用多个密码库,而 pass 并没有为此提供特别方便的解决方案。

因此,我在 qpass 的 2.0 版本中增加了对查询多个密码库的支持。目前,我保持了简单性,这意味着没有区分不同密码库中的密码,因此密码的名称需要可识别且唯一。

关于名称

如上所述,我最初编写和命名 qpass 时,没有打算将其发布。然而,从那时起,我的工作团队开始使用 pass 来管理共享密码库,自从我们开始这样做以来,我就非常怀念使用 qpass 查询该密码库的能力 :-)。

将 qpass 作为开源项目发布,并提供可在 PyPI 上找到的正确 Python 包,为与我的团队分享 qpass 提供了一种很好的方式,同时也迫使我维护适当的文档和自动化测试套件。

在考虑是否发布 qpass 时,我发现有一个名为 QPass 的现有密码管理器。出于以下原因,我决定不为我的项目改名:

  • 虽然这两个项目都是密码管理器,但它们针对的是非常不同的受众(我预期我的最终用户将是高级用户,他们很可能是系统管理员和/或程序员)。

  • 我认为 GUI 程序的可执行文件名称远不如命令行程序的可执行文件名称相关。这是因为 GUI 最有可能通过应用程序启动器启动,这意味着可执行文件甚至不需要在 $PATH 上。

  • 让我们说实话,pass 已经是针对高级用户设计的,所以我的 qpass 前端可能不会看到很多用户 ;-)。

联系

qpass 的最新版本可在 PyPIGitHub 上找到。文档托管在 Read the Docs 上,包括变更日志。有关错误报告,请在 GitHub 上创建问题。如果您有任何问题、建议等,请随时发送电子邮件至 peter@peterodding.com

许可协议

此软件受 MIT 许可证许可。

© 2018 Peter Odding。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

qpass-2.3.tar.gz (25.8 kB 查看哈希值)

上传时间 源代码

构建分发

qpass-2.3-py2.py3-none-any.whl (17.8 kB 查看哈希值)

上传时间 Python 2 Python 3