在 Linux 电脑上,我一直使用 zx2c4's pass 命令来管理密码。 最近和某位前同事聊天的时候,谈到了手机端密码管理的需求,想到自己平时偶尔也是需要在手机上输入密码; 不过每当这种时候,密码稍微复杂一点,我都是将手机通过 USB 线连接到电脑上之后, 使用 adb 命令 —— adb input text $(pass show <pass-name>) ,来处理的。 很明显,这样的方式太过麻烦,常常令我头大。
之前没发现 zx2c4's pass 居然还有移动端的客户端 —— 安卓上对应的是 Password Store APP, 于是开始在自己的安卓手机上下载、安装,并尝试配置使用。
Password Store 通过 clone git repository 的方式同步密码, 所以需要有个 git server,可以是类似 github 这种公共的仓库服务,也可以在本地创建一个私有仓库服务:
$ cd <somewhere> $ mkdir password-store.git $ cd password-store.git $ git init --bare
然后同步本地 ~/.password-store 目录下的所有内容到刚刚创建的 git server 中。 如果 ~/.password-store 还不是一个 git repository,则需要先为其生成一个 git repository:
$ cd ~/.password-store $ git init $ git add . $ git commit -m "Initial commit" $ git remote add origin <username>@<hostname>:/path/to/password-store.git $ git push origin master
之后,在手机上打开 Password Store 软件,配置刚刚生成的 git server 的信息, 至于在同步 git repository 的时候通过何种方式认证,这里我选择了 ssh key:
$ ssh-keygen -t ecdsa -f ~/.ssh/pass_ecdsa Transfer pass_ecdsa file to your phone, and open Password Store APP to import it. And then append content of ~/.ssh/pass_ecdsa.pub to ~/.ssh/authorized_keys file.
配置好上面这些之后就可以开始同步了,稍稍一会儿电脑上的 pass 密钥库就都同步到了手机上。 但是如何在手机 Password Store 上解密 pass 密钥文件呢? 此时则还需在手机上安装 OpenKeychain APP, 然后将电脑上的 gnupg key 导入到 OpenKeychain 中:
$ gpg --armor --export-secret-keys <key-name> | gpg --armor --symmetric --output <key-name>.sec.asc Transfer <key-name>.sec.asc to your phone, and open OpenKeychain APP to import it.
但是到了这一步之后,我发现还是无法解密 Password Store 中的密钥文件, 原因是需要在手机的设置中为 OpenKeychain 软件开启如下权限 (参考 解决方案 ) :
Settings -> Apps -> OpenKeychain -> Display pop-up windows while running in the background
至此,pass 命令终于可以在安卓手机上愉快地使用啦!
Updated 2021/11/18
最近开始用 iPhone 手机了,所以在 IOS 上也找了对应的 APP —— Pass, 其相对于安卓上的 Password Store 的优势是集成了 gnupg key 的管理, 因此无需另外一款类似 OpenKeychain 的 APP 配合使用。
Git repository 的同步和认证方式都与安卓的一样,只是 gnupg key 的导入同时需要 public key 和 secret key
$ gpg --armor --export -o <key-name>.asc <key-name> $ gpg --armor --export-secret-keys -o <key-name>.sec.asc <key-name> Transfer <key-name>.asc and <key-name>.sec.asc to your phone, and open Pass APP to import it.
Thanks for reading :)