标签 pass 下的文章

目标

学习在 Linux 上使用 pass 密码管理器来管理你的密码

条件

  • 需要 root 权限来安装需要的包

难度

简单

约定

  • # - 执行指定命令需要 root 权限,可以是直接使用 root 用户来执行或者使用 sudo 命令来执行
  • $ - 使用普通的非特权用户执行指定命令

介绍

如果你有根据不同的意图设置不同密码的好习惯,你可能已经感受到需要一个密码管理器的必要性了。在 Linux 上有很多选择,可以是专有软件(如果你敢用的话)也可以是开源软件。如果你跟我一样喜欢简洁的话,你可能会对 pass 感兴趣。

第一步

pass 作为一个密码管理器,其实际上是一些你可能早已每天使用的、可信赖且实用的工具的一种封装,比如 gpggit 。虽然它也有图形界面,但它专门设计能成在命令行下工作的:因此它也可以在 headless 机器上工作(LCTT 译注:根据 wikipedia 的说法,所谓 headless 是指没有显示器、键盘和鼠标的机器,一般通过网络链接来控制)。

安装

pass 在主流的 Linux 发行版中都是可用的,你可以通过包管理器安装:

Fedora

# dnf install pass

RHEL 和 CentOS

pass 不在官方仓库中,但你可以从 epel 中获取道它。要在 CentOS7 上启用后面这个源,只需要执行:

# yum install epel-release

然而在 Red Hat 企业版的 Linux 上,这个额外的源是不可用的;你需要从 EPEL 官方网站上下载它。

Debian 和 Ubuntu

# apt-get install pass

Arch Linux

# pacman -S pass

初始化密码仓库

安装好 pass 后,就可以开始使用和配置它了。首先,由于 pass 依赖于 gpg 来对我们的密码进行加密并以安全的方式进行存储,我们必须准备好一个 gpg 密钥对。

首先我们要初始化密码仓库:这就是一个用来存放 gpg 加密后的密码的目录。默认情况下它会在你的 $HOME 创建一个隐藏目录,不过你也可以通过使用 PASSWORD_STORE_DIR 这一环境变量来指定另一个路径。让我们运行:

$ pass init

然后 password-store 目录就创建好了。现在,让我们来存储我们第一个密码:

$ pass edit mysite

这会打开默认文本编辑器,我么只需要输入密码就可以了。输入的内容会用 gpg 加密并存储为密码仓库目录中的 mysite.gpg 文件。

pass 以目录树的形式存储加密后的文件,也就是说我们可以在逻辑上将多个文件放在子目录中以实现更好的组织形式,我们只需要在创建文件时指定存在哪个目录下就行了,像这样:

$ pass edit foo/bar

跟上面的命令一样,它也会让你输入密码,但是创建的文件是放在密码仓库目录下的 foo 子目录中的。要查看文件组织结构,只需要不带任何参数运行 pass 命令即可:

$ pass
Password Store
├── foo
│   └── bar
└── mysite

若想修改密码,只需要重复创建密码的操作就行了。

获取密码

有两种方法可以获取密码:第一种会显示密码到终端上,方法是运行:

pass mysite

然而更好的方法是使用 -c 选项让 pass 将密码直接拷贝到剪切板上:

pass -c mysite

这种情况下剪切板中的内容会在 45 秒后自动清除。两种方法都会要求你输入 gpg 密码。

生成密码

pass 也可以为我们自动生成(并自动存储)安全密码。假设我们想要生成一个由 15 个字符组成的密码:包含字母,数字和特殊符号,其命令如下:

pass generate mysite 15

若希望密码只包含字母和数字则可以是使用 --no-symbols 选项。生成的密码会显示在屏幕上。也可以通过 --clip-c 选项让 pass 把密码直接拷贝到剪切板中。通过使用 -q--qrcode 选项来生成二维码:

qrcode

从上面的截屏中可看出,生成了一个二维码,不过由于运行该命令时 mysite 的密码已经存在了,pass 会提示我们确认是否要覆盖原密码。

pass 使用 /dev/urandom 设备作为(伪)随机数据生成器来生成密码,同时它使用 xclip 工具来将密码拷贝到粘帖板中,而使用 qrencode 来将密码以二维码的形式显示出来。在我看来,这种模块化的设计正是它最大的优势:它并不重复造轮子,而只是将常用的工具包装起来完成任务。

你也可以使用 pass mvpass cppass rm 来重命名、拷贝和删除密码仓库中的文件。

将密码仓库变成 git 仓库

pass 另一个很棒的功能就是可以将密码仓库当成 git 仓库来用:通过版本管理系统能让我们管理密码更方便。

pass git init

这会创建 git 仓库,并自动提交所有已存在的文件。下一步就是指定跟踪的远程仓库了:

pass git remote add <name> <url>

我们可以把这个密码仓库当成普通仓库来用。唯一的不同点在于每次我们新增或修改一个密码,pass 都会自动将该文件加入索引并创建一个提交。

pass 有一个叫做 qtpass 的图形界面,而且也支持 Windows 和 MacOs。通过使用 PassFF 插件,它还能获取 firefox 中存储的密码。在它的项目网站上可以查看更多详细信息。试一下 pass 吧,你不会失望的!


via: https://linuxconfig.org/how-to-organize-your-passwords-using-pass-password-manager

作者:Egidio Docile 译者:lujun9972 校对:Locez

本文由 LCTT 原创编译,Linux中国 荣誉推出

现如今要记住类似 email、银行、社交媒体、在线支付、ftp 等等这么多的密码相信对每一个人来说都是一个巨大的挑战。

由于需求和使用,密码管理器现如今变得非常的流行。在 Linux 中我们可以有很多选择,包括基于 GUI 和基于 CLI 两种。今天我们要讲的是一款基于 CLI 的密码管理器叫做 pass 。

pass 是 Linux 上的一个简单的命令行密码管理器,它将密码存储在一个 gpg 加密后的文件里。这些加密后的文件很好地组织按目录结构存放。

所有密码都存在于 ~/.password-store 中,它提供了添加、编辑、生成和检索密码等简单命令。

它是一个非常简短和简单的 shell 脚本。 它能够临时将密码放在剪贴板上,并使用 git 跟踪密码的修改。

这是一个很小的 shell 脚本,它还使用了少量的默认工具比如 gnupgtreegit,同时还有活跃的社区为它提供 GUI 和扩展。

如何在 Linux 中安装 Pass

Pass 可从大多数 Linux 的主要发行版的仓库中获得。 所以,你可以使用你的分布式包管理器来安装它。

对于基于 Debian 的系统,你可以使用 apt-getapt 包管理器命令来安装 pass。

$ sudo apt-get install pass

对于基于 RHEL/CentOS 的操作系统, 使用 yum 包管理器命令来安装它。

$ sudo yum install pass

Fedora 系统可用 dnf 包管理器命令来安装。

$ sudo dnf install pass

openSUSE 系统可以用 zypper 包管理器命令来安装。

$ sudo zypper in password-store

对于基于 Arch Linux 的操作系统用 pacman 包管理器来安装它。

$ pacman -S pass

如何生成 GPG 密钥对

确保你拥有你个人的 GPG 密钥对。如果没有的话,你可以通过在终端中输入以下的命令并安装指导来创建你的 GPG 密钥对。

$ gpg --gen-key

运行以上的命令以生成 GPG 密钥对时会有一系列的问题询问,谨慎输入问题的答案,其中有一些只要使用默认值即可。

初始化密码存储

如果你已经有了 GPG 密钥对,请通过运行以下命令初始化本地密码存储,你可以使用 email-id 或 gpg-id 初始化。

$ pass init [email protected]
mkdir: created directory '/home/magi/.password-store/'
Password store initialized for [email protected]

上述命令将在 ~/.password-store 目录下创建一个密码存储区。

pass 命令提供了简单的语法来管理密码。 我们一个个来看,如何添加、编辑、生成和检索密码。

通过下面的命令检查目录结构树。

$ pass
or
$ pass ls
or
$ pass show
Password Store

我没有看到任何树型结构,所以我们将根据我们的需求来创建一个。

插入一个新的密码信息

我们将通过运行以下命令来保存 gmail 的 id 及其密码。

$ pass insert eMail/[email protected]
mkdir: created directory '/home/magi/.password-store/eMail'
Enter password for eMail/[email protected]: 
Retype password for eMail/[email protected]:

执行重复操作,直到所有的密码插入完成。 比如保存 Facebook 密码。

$ pass insert Social/Facebook_2daygeek
mkdir: created directory '/home/magi/.password-store/Social'
Enter password for Social/Facebook_2daygeek: 
Retype password for Social/Facebook_2daygeek: 

我们可以列出存储中的所有现有的密码。

$ pass show
Password Store
├── 2g
├── Bank
├── eMail
│   ├── [email protected]
│   └── [email protected]
├── eMail
├── Social
│   ├── Facebook_2daygeek
│   └── Gplus_2daygeek
├── Social
└── Sudha
    └── [email protected]

显示已有密码

运行以下命令从密码存储中检索密码信息,它会询问你输入密码以解锁。

$ pass eMail/[email protected]
*******

在剪贴板中复制密码

要直接将密码直接复制到剪贴板上,而不是在终端上输入,请使用以下更安全的命令,它会在 45 秒后自动清除密码。

$ pass -c eMail/[email protected]
Copied eMail/[email protected] to clipboard. Will clear in 45 seconds.

生成一个新密码

如果你想生成一些比较难以猜测的密码用于代替原有的奇怪密码,可以通过其内部的 pwgen 功能来实现。

$ pass generate eMail/[email protected] 15
An entry already exists for eMail/[email protected]. Overwrite it? [y/N] y
The generated password for eMail/[email protected] is:
y!NZ<%T)5Iwym_S

生成没有符号的密码。

$ pass generate eMail/[email protected] 15 -n
An entry already exists for eMail/[email protected]. Overwrite it? [y/N] y
The generated password for eMail/[email protected] is:
TP9ACLyzUZUwBwO

编辑现有的密码

使用编辑器插入新密码或编辑现有密码。 当你运行下面的命令时,将会在包含密码的文本编辑器中打开文件 /dev/shm/pass.wUyGth1Hv0rnh/[email protected]。 只需在其中添加新密码,然后保存并退出即可。

$ pass edit eMail/[email protected]

File: /dev/shm/pass.wUyGth1Hv0rnh/[email protected]                                                                   
TP9ACLyzUZUwBwO

移除密码

删除现有密码。 它将从 ~/.password-store 中删除包含 .gpg 的条目。

$ pass rm eMail/[email protected]
Are you sure you would like to delete eMail/[email protected]? [y/N] y
removed '/home/magi/.password-store/eMail/[email protected]'

多选项功能

要保存详细信息,如 URL、用户名、密码、引脚等信息,可以使用以下格式。 首先确保你要将第一项设置为密码,因为它用于在使用剪贴板选项时将第一行复制为密码,以及后续行中的附加信息。

$ pass insert eMail/[email protected] -m
Enter contents of eMail/[email protected] and press Ctrl+D when finished:

H3$%hbhYT
URL : http://www.2daygeek.com
Info : Linux Tips & Tricks
Ftp User : 2g

(题图:Pixabay, CC0)


via: http://www.2daygeek.com/pass-command-line-password-manager-linux/

作者:2DAYGEEK 译者:chenxinlong 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出