在 Linux 终端中管理您的密码

Pass 是一个经典的 UNIX 风格密码管理系统,它使用 GnuPG (GPG) 进行加密,并以终端作为其主要界面。
43 位读者喜欢这篇文章。
Linux keys on the keyboard for a desktop computer

如今,我们每个人都有几十个密码。幸运的是,这些密码的大部分可能用于网站,并且您可能通过互联网浏览器访问大多数网站,而大多数浏览器都有内置的密码管理器。最常见的互联网浏览器还具有同步功能,可帮助您在所有设备上运行的浏览器之间分发密码,这样您在需要时就不会缺少登录信息。如果这还不够,还有优秀的开源项目,例如 BitWarden 可以托管您的加密密码,确保只有您拥有解锁密码的密钥。这些解决方案有助于轻松维护唯一密码,我为一部分密码使用了这些便捷的系统。但是,我的主要密码存储库比任何这些方法都简单得多。我主要使用 pass,这是一个经典的 UNIX 风格密码管理系统,它使用 GnuPG (GPG) 进行加密,并以终端作为其主要界面。

安装 pass

您可以从您的发行版仓库安装 pass 命令。

在 Fedora、Mageia 和类似的发行版上,您可以使用您的软件包管理器安装它

$ sudo dnf install pass

在 Elementary、Mint 和其他基于 Debian 的发行版上

$ sudo apt install pass

在 macOS 上,您可以使用 Homebrew 安装它

$ brew install pass

配置 GnuPG

在使用 pass 之前,您需要一个有效的 PGP (“Pretty Good Privacy”) 密钥。如果您已经维护了一个 PGP 密钥,您可以跳过此步骤,或者您可以选择创建一个新密钥专门用于 pass。最常见的开源 PGP 实现是 GnuPG (GPG),它随 Linux 一起提供,您也可以从 gpgtools.org、Homebrew 或 Macports 在 macOS 上安装它。要创建 GnuPG 密钥,请运行此命令

$ gpg --generate-key

系统会提示您输入姓名和电子邮件地址,并为密钥创建密码。您的密钥是一个数字文件,您的密码只有您知道。这两者结合起来可以锁定和解锁加密信息,例如包含密码的文件。

GPG 密钥很像房屋钥匙或汽车钥匙。如果您丢失了它,那么由它锁定的任何东西都将变得无法获得。仅仅知道您的密码是不够的。

如果您已经管理了多个 SSH 密钥,您可能已经习惯了这一点。如果您是数字加密密钥的新手,则可能需要一些时间来适应。备份您的 ~/.gnupg 目录,这样您就不会在下次心血来潮决定尝试令人兴奋的新发行版时意外删除它。

制作备份并安全保管备份。

配置 pass

要开始使用 pass,您必须初始化一个密码存储库,它被定义为配置为使用特定加密密钥的存储位置。您可以通过与密钥关联的名称或数字指纹来指示您要为密码存储库使用哪个 GPG 密钥。您自己的名字通常是更简单的选择

$ pass init seth
mkdir: created directory '/home/seth/.password-store/'
Password store initialized for seth

如果您忘记了自己的名字,可以使用 gpg 命令查看与您的密钥关联的数字指纹和名称

$ gpg --list-keys
gpg --list-keys
/home/seth/.gnupg/pubring.kbx
-----------------------------
pub  ed25519 2022-01-06 [SC] [expires: 2024-01-06]
     2BFF94286461216C907CBA52F067996F13EF10D8
uid  [ultimate] Seth Kenlon <seth@example.com>
sub  cv25519 2022-01-06 [E] [expires: 2024-01-06]

使用指纹初始化密码存储库与使用您的名字基本相同

$ pass init 2BFF94286461216C907CBA52F067996F13EF10D8

存储密码

使用 pass add 命令将密码添加到您的密码存储库

$ pass add www.example.com
Enter password for www.example.com:

在提示时输入您要添加的密码。

密码现在存储在您的密码存储库中。您可以自己查看一下

$ ls /root/.password-store/
www.example.com.gpg

当然,该文件是不可读的,如果您尝试对其运行 cat 或 less ,您将在终端中获得不可打印的字符(如果您的终端显示过于混乱,请使用 reset 修复您的终端。)

使用 pass 编辑密码

我为不同的在线活动使用不同的用户名,因此网站的用户名通常与密码一样重要。pass 系统允许这样做,即使它默认情况下不会提示您输入用户名。您可以使用 pass edit 命令将用户名添加到密码文件中

$ pass edit www.example.com

这将打开一个文本编辑器(特别是您设置为 EDITOR 或 VISUAL 环境变量 的编辑器),显示 www.example.com 文件的内容。目前,这只是一个密码,但您可以添加用户名,甚至添加另一个 URL 或任何您想要的信息。这是一个加密文件,因此您可以自由地在其中保留您想要的内容。

bd%dc$3a49af49498bb6f31bc964718C
user: seth123
url: example.com

保存文件并关闭它。

从 pass 获取密码

要查看密码文件的内容,请使用 pass show 命令

$ pass show www.example.com
bd%dc$3a49af49498bb6f31bc964718C
user: seth123
url: www.example.org

搜索密码

有时很难记住密码是归档在 www.example.com 下,还是仅归档在 example.com 下,甚至是像 app.example.com 这样的名称下。此外,一些网站基础设施对不同的站点功能使用不同的 URL,因此您可能会将密码归档在 www.example.com 下,即使您也对合作伙伴站点 www.example.org 使用相同的登录信息。

如有疑问,请使用 greppass grep 命令显示搜索词的所有实例,无论是在文件名中还是在文件内容中

$ pass grep example
www.example.com:
url: www.example.org

将 pass 与浏览器一起使用

我使用 pass 来管理不仅仅是互联网密码的信息,但网站是我最常需要密码的地方。我通常在我的计算机上的某个地方打开一个终端,因此 Alt+Tab 切换到终端并使用 pass 获取我需要的信息并不麻烦。但这并不是我所做的,因为有一些插件可以将 pass 与 Web 浏览器集成。

Pass 主机脚本

首先,安装 pass 主机脚本

$ curl -sSL github.com/passff/passff-host/release/latest/download/install_host_app.sh

此安装脚本放置一个 Python 脚本,该脚本可帮助您的浏览器访问您的密码存储库和 GPG 密钥。将其与您使用的浏览器的名称一起运行(或不带任何名称,以查看所有选项)

$ bash ./install_host_app.sh firefox

如果您使用多个浏览器,则可以为每个浏览器安装它。

Pass 插件

安装主机应用程序后,您可以为浏览器安装插件或扩展程序。在浏览器的插件或扩展程序管理器中搜索 PassFF 插件。

安装插件,然后关闭并重新启动浏览器。

导航到您在密码存储库中拥有密码的站点。现在在您的登录文本字段的右侧有一个小的 P 图标。

单击 P 按钮以查看密码存储库中匹配的站点名称列表。

单击笔和纸图标以填写表单,或单击纸飞机图标以填写并自动提交表单。

简单易用的密码管理,并且完全集成!

尝试将 pass 用作您的 Linux 密码管理器

对于想要使用他们每天已经使用的工具来管理密码和个人信息的用户来说,pass 命令是一个很好的选择。如果您已经依赖 GPG 和终端,那么您可能会喜欢 pass 系统。对于不希望其密码与特定应用程序绑定的用户来说,这也是一个重要的选择。也许您不只使用一个浏览器,或者您不喜欢如果您决定停止使用某个应用程序,那么从该应用程序中提取密码可能很困难的想法。使用 pass,您可以在类似 UNIX 且直接的系统中保持对您的秘密的控制。

接下来阅读
Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。他曾在电影和计算机行业工作,并且经常同时进行。

评论已关闭。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.