- 1 课程回顾
- 2 概述
- 3 Mac 上的 pass 配置
- 3.1 安装
- 3.2 用已有的 PGP Key 初始化
- 3.3 [可选] 通过一个 git 仓库来管理密码
- 4 Emacs 上的 pass 配置
- 5 在 Mac 的 Firefox 上使用 pass
- 6 在 Mac 的 Alfred 里使用 pass
- 7 在手机上使用 pass
- 7.1 华为鸿蒙3.1/安卓
- 7.2 iOS
- 8 结语
1 课程回顾 🔗
通过上节课,我们学习了如何在 Emacs 里使用 ChatGPT,有了这个工具后,我们的 Emacs 将变得更加无所不能。
今天,我们来学习如何通过 Emacs 来管理我们的密码。
2 概述 🔗
如何管理自己的密码,是人们工作生活的刚需,而设备、操作系统的多样化,也导致了密码管理的多样化。在苹果生态,有 iCloud 钥匙串、1Password 等解决方案,在 Linux 生态,有 pass 这样的工具。
因为个人的原因,我不期望我的所有生态都绑定在苹果这样的生态上,于是我计划着将我的密码管理,都统一迁移到以 pass 为核心的体系上,这样,哪天我用不了苹果设备的时候,不至于手足无措。
我个人对于密码管理的需求如下:
- 支持 Mac、Linux;
- 支持移动端(iOS、安卓)的密码自动输入;
- 支持浏览器和App的自动输入;
- 支持随时随地的查看;
- 能够通过某种方法云同步(最好是自己的 NAS);
基于以上的需求,我们将目光投在 pass
这个工具,这个工具的好处在于跨平台,开源,符合 unix 的哲学,支持 Git(适合 NAS 云同步)等。
3 Mac 上的 pass 配置 🔗
3.1 安装 🔗
直接执行下面的命令安装即可:
brew install pass
3.2 用已有的 PGP Key 初始化 🔗
通过 gpg --list-keys
命令来查看当前系统已有的 key 的信息:
gpg --list-keys
命令的输出可能长下面这样:
/Users/randolph/.gnupg/pubring.kbx
----------------------------------
pub rsa4096 2021-03-28 [SC]
827........................A975A
uid [ultimate] Your Name <Yourmail@mail.com>
sub rsa4096 2021-03-28 [E]
然后找到 pub 第二行的 key,通过下面的命令来初始化:
pass init 827........................A975A
3.3 [可选] 通过一个 git 仓库来管理密码 🔗
我在 NAS 上建了一个 Gitea 的 Docker 服务,用来管理一些自己个人的私有仓库。那我们就可以通过下面几个步骤来用 git 仓库管理密码:
- git init
pass git init
- 添加远程仓库,假设你自己的仓库地址是:
http://gitea.yoursite:10800/yourname/pass.git
pass git remote add origin http://gitea.yoursite:10800/yourname/pass.git
- 将所有的本地的密码推送到仓库里:
pass git push -u --all
- 如果你想在电脑端修改了密码后,自动推送到仓库,你可以在
~/.password-store/.git/hooks/post-commit
文件写入下面的内容:#!/bin/sh set -x git pull --rebase git push
至此,在 Mac 端的配置都完成了。下面主要聊一下如何在 Emacs 里管理密码。
4 Emacs 上的 pass 配置 🔗
在 Emacs 上,我们通过 pass 插件来进行密码管理。首先,我们来安装它:
(use-package pass
:ensure t
:commands (pass)
)
安装完后,我们可以通过 M-x pass
的方式来管理密码了,界面大概长下面这样(初始没有这些密码的目录,这些都是我自己维护的密码):
我们最主要使用到的两个操作是:
- i
- insert, 插入一个新的密码
- j
- Jump to Entry, 跳转到我们想要的密码,查看密码
4.1 插入新密码 🔗
我们在 pass
的界面按下 i
键后,会提示让我们输入 Password entry
,我们以 Email/example.com
为例来新建一个邮箱密码(Email这个目录是为了将密码分门别类,维护和可视化更加直观,核心在于 exmaple.com 这个邮箱所在的网站地址):
然后,它会提示你输入 Password
,以及 Confirm password
,两次密码必须输入一致:
然后就添加成功了:
此时,只有关于 example 的密码,还没有登录名信息,我们会在下个小节讲如何添加登录信息。
4.2 查看一个密码 🔗
我们按下 j
键,通过 vertico
补全框架定位到 exmaple.com
:
光标会自动跳转到 example.com
这个条目上,然后按下回车:
此时,根据它的提示,按下 C-c C-c
可以显示或者修改密码:
这里,我们还需要增加一个信息,就是邮箱的登录名,我们添加一个 login
的信息如下:
然后保存即可。
关于其他的操作,都很简单, pass
的界面也都有相应的快捷键提示。至此,Emacs 端的配置就完成了。
5 在 Mac 的 Firefox 上使用 pass 🔗
在 Firefox 上使用 pass,需要有下面3个步骤:
-
curl -sSL github.com/passff/passff-host/releases/latest/download/install_host_app.sh bash ./install_host_app.sh firefox
-
安装 Firefox 的插件 PassFF
-
在某个网站提示输入密码时,按下右边的 P 图标,然后他会自动找到这个网站的密码,选中并点击最右侧的图标就可以直接输入密码登录了:
6 在 Mac 的 Alfred 里使用 pass 🔗
如果你使用 Alfred,那你可以下载 AlfredPass 这个 workflow,直接安装后即可。激活 Alfred 后,输入 pass
关键字,然后输入你想要查询的密码网站,它就可以查看和拷贝密码了。
7 在手机上使用 pass 🔗
7.1 华为鸿蒙3.1/安卓 🔗
截止本文写作时,我已经将我的手机从 iPhone 13 换成了华为 P60,我将以华为鸿蒙 OS 为例来展示如何使用 pass,其他安卓系统相同。在鸿蒙3.1里使用 pass 需要下面几个步骤:
-
在 F-droid 商店里安装
Password Store
应用和其依赖应用OpenKeychain
-
在
Password Store
这个应用的设置里,设置好 Git repo:ssh://git@gitea.yoursite:10022/randolph/pass.git
注:在设置 Repo 的时候,如果使用 https 的 URL,不支持自定义端口,所以,我们需要用 ssh 的 URL。
-
在
OpenKeyChain
这个应用的设置里导入已有的 GPG pubkey 和 GPG private key -
在
Password Store
里点击同步即可,然后就可以在应用里看到所有的密码了: -
[可选] 在
Password Store
这个应用的设置里,打开Enable Autofill
就可以实现给华为手机里的 App 和网页里自动填写密码了。
7.2 iOS 🔗
iOS 的方式与安卓类似:
-
在 Apple Store 里安装 pass:
-
配置 Repo 和 PGP Key,配置参数和方法与安卓类似。
-
配置结束后,就能看到所有的密码了:
-
如果要在 iOS 上自动填充,需要在 「自动填充密码」的设置里选择 pass:
8 结语 🔗
如何管理自己的密码,其实是一个大的话题,并不仅限于 Emacs 的范畴,但 Emacs 可以做到的是在 Emacs 里快速、便利的管理自己的密码,再通过相应的 Git 同步等机制,做到多端实时的密码管理。
这节课的配置文件的快照见:emacs-config-l28.org
你也可以在 这里 查看最新的配置文件。