前言
前面我们讲的 GPG
的相关内容,对于大多数人来可能用的不多。今天我们就来实际的使用一下,用它来管理你的密码。
密码是我们日常都会用到的,而且使用很多,每个网站都有不同的账号和不同的密码。如果你使用同样的密码,那就非常危险了,一旦某个密码泄漏了,其他网站也会跟着遭殃。定期修改密码还是非常有必要的。
pass 介绍
pass
是一个符合 Unix
哲学的命令行工具,它被设计成用来管理密码,并且是开源的,如果你不放心,可以去查看代码,或者改成你需要的。不要看到命令行就怕了,它有很多客户端,可以满足大多数人使用。
类似 pass
的产品有我们常见的 1Password
、 LastPass
等。 1Password
是个收费的软件, LastPass
虽然也有免费的版本,但是密码放在别人那里总是不放心。毕竟之前也出过幺蛾子。如果你有使用这些产品,也可以非常方便导入到 pass
中。
pass
使用 GPG
非对称加密,这就是我们选择它的原因。
pass 安装
照例我们先来安装 pass
macOS
Linux/Arch
初始化 pass
在初始化之前,先要确保你已经用 GPG
创建过密钥了,如果没有可以查看前几篇文章。
1
2
3
|
➜ ~ pass init test1 # test1 是用来加密的 GPG id
mkdir: created directory '/home/test/.password-store/'
Password store initialized for test1
|
添加密码
初始化好了密码之后,我们就可以把已经存在密码添加到 pass 中了。
1
2
3
4
5
6
7
|
➜ ~ pass insert Email/test.com
mkdir: created directory '/home/test/.password-store/Email'
Enter password for Email/test.com:
Retype password for Email/test.com:
[master b331dff] Add given password for Email/test.com to store.
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 Email/test.com.gpg
|
除了把已经注册过的网站添加到 pass
中,我们还可以用 pass
来生成密码。用 pass
生成密码可以避免所有的密码都使用同一个。
1
2
3
4
5
6
|
➜ ~ pass generate Email/test1.com 15
[master e5be6b2] Add generated password for Email/test1.com.
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 Email/test1.com.gpg
The generated password for Email/test1.com is:
o6oQ\!}P$]sOU<l
|
后面的 15
表示密码的位数。
查看密码
1
2
3
4
5
|
➜ ~ pass Email/test1.com
o6oQ\!}P$]sOU<l
# 拷贝密码到剪切板
➜ ~ pass -c Email/test.com
Copied Email/test.com to clipboard. Will clear in 45 seconds.
|
修改密码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
➜ ~ pass insert Email/test.com
An entry already exists for Email/test.com. Overwrite it? [y/N] y
Enter password for Email/test.com:
Retype password for Email/test.com:
[master 0d99622] Add given password for Email/test.com to store.
1 file changed, 0 insertions(+), 0 deletions(-)
rewrite Email/test.com.gpg (100%)
➜ ~ pass generate Email/test1.com 15
An entry already exists for Email/test1.com. Overwrite it? [y/N] y
[master eceb081] Add generated password for Email/test1.com.
1 file changed, 0 insertions(+), 0 deletions(-)
rewrite Email/test1.com.gpg (100%)
The generated password for Email/test1.com is:
Y<`ZO,'VFx8|U[_
|
删除密码
1
2
3
4
5
6
|
➜ ~ pass rm Email/test1.com
Are you sure you would like to delete Email/test1.com? [y/N] y
removed '/home/test/.password-store/Email/test1.com.gpg'
[master 5ed43a8] Remove Email/test1.com from store.
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 Email/test1.com.gpg
|
移动端
由于 pass
是个开源的产品,所有有很多大牛基于这个开发出了各种客户端,这里留下 Android
和 iOS
的地址,它们使用起来非常简单。
iOS
https://apps.apple.com/cn/app/pass-password-store/id1205820573?l=en
Android
https://f-droid.org/packages/com.zeapo.pwdstore/
多端同步
我们现在日常每个人都可能又多个设备,所以我们需要在多个设备间进行同步。传统的方式就是通过 U盘
进行拷贝,这样做非常局限,不是每部手机都有 USB
。
为了解决这个问题 pass
结合 Git
用来同步密码。
1
2
3
4
5
6
7
8
9
|
# 只需要在已有的项目上输入如下命令
➜ ~ pass git init
Initialized empty Git repository in /home/test/.password-store/.git/
[master (root-commit) f41a601] Add current contents of password store.
1 file changed, 1 insertion(+)
create mode 100644 .gpg-id
[master d0c06cb] Configure git repository for gpg file diff.
1 file changed, 1 insertion(+)
create mode 100644 .gitattributes
|
每次操作, pass
都会用 Git
帮我们生成一次 commit
。
我们用 Git
去管理 pass
但是还没有配置 Git
的仓库地址,如过你没有可以使用 Github
或者自己搭一个 Gitlab
甚至可以使用 Gitee
。配置的命令如下
1
|
pass git remote add origin https://github.com/xxx/xxx.git
|
添加好之后我们就需要把本地的密码推送到服务器了
当我们在另外一台设备上使用的时候,可以通过下面命令来把密码下载到本地
这些放到 Git
中的文件都是已经加过密的,只要你不把私钥泄漏,还是相当安全的。
参考