本文记录了在命令行下使用gpg+pass+git进行密码管理的方法和步骤,以及在多台电脑间实现密码信息的同步。
对于这些命令的详细使用方法,可查阅文章末尾的参考部分。
使用GPG生成密钥对
你需要先创建GPG密钥,后面会使用该密钥来对密码信息进行加解密
1 | gpg2 --gen-key |
依照提示填写信息即可
真实姓名: Xxx Xxx
电子邮箱: xxxxxx@gmail.com
使用pass保存密码信息
初始化密码存储
1 | pass init xxxxxx@gmail.com |
可以使用电子邮箱,也可以使用gpg2生成的ID;默认在~/.password-store
目录下创建一个密码存储区
使用git+github管理密码
pass git
命令的使用方法可以参考git
命令
- 初始化git密码仓库
1
2pass git init
pass git remote add origin git@github.com:xxxxxx/远程仓库.git
此后,对密码信息的添加/删除等操作,都会自动提交本地。
提交本地修改到服务器
1
pass git push -u origin master
从服务器同步修改到本地
1
pass git pull origin master
此处使用ssh连接github,可参考:使用 SSH 连接到 GitHub
密码操作
插入新的密码信息
1
2
3
4pass insert email/test@gmail.com
mkdir: 已创建目录 '/home/xxxxxx/.password-store/email'
Enter password for email/test@gmail.com:
Retype password for email/test@gmail.com:保存更多信息
1
2
3
4
5
6pass insert -m email/test@gmail.com
mkdir: 已创建目录 '/home/xxxxxx/.password-store/email'
Enter contents of email/test@gmail.com and press Ctrl+D when finished:
<信息1>
<信息2>列出密码存储区已保存的密码
1
2
3
4$ pass
Password Store
└── email
└── test@gmail.com显示密码,会要求输入gpg密码
1
2pass email/test@gmail.com
test生成随机密码,并替换掉旧密码
1
2
3
4pass generate email/test@gmail.com 8
An entry already exists for email/test@gmail.com. Overwrite it? [y/N] y
The generated password for email/test@gmail.com is:
d~'cRy3o编辑现有的密码,会自动打开默认编辑器进行密码修改
1
$ pass edit email/test@gmail.com
移除密码信息
1
2
3pass rm email/test@gmail.com
Are you sure you would like to delete email/test@gmail.com? [y/N] y
已删除'/home/xxxxxx/.password-store/email/test@gmail.com.gpg'
在目标电脑上同步密码库
导入GPG密钥
先在原电脑上把GPG密钥导出,再把导出的文件发送给目标电脑
1
2gpg2 -o public.gpg --export xxxxxx@gmail.com
gpg2 -o private.gpg --export-secret-keys xxxxxx@gmail.com然后在目标电脑上,导入GPG密钥
导入私钥
1
2
3
4gpg2 --import private.gpg
从输出中获得KEYID,修改该密钥的信任程度,否则可能无法使用该密钥对信息进行加密
gpg --edit-key {KEYID} trust quit
在提示中输入'5' (I trust ultimately)导入公钥
1
gpg2 --import public.gpg
同步密码仓库
现在,继续在目标电脑上,把github服务器上的密码仓库同步到本地
初始化密码存储
1
2
3pass init xxxxxx@gmail.com
mkdir: 已创建目录 '/home/cmy/.password-store/'
Password store initialized for xxxxxx@gmail.com同步github上的密码仓库
1
2
3
4pass git init # 执行完该命令后,会自动创建git仓库并在本地提交,后面通过reset命令使用服务器的内容覆盖掉本地提交
pass git remote add origin git@github.com:xxxxxx/远程仓库.git
pass git fetch
pass git reset --hard origin/master至此,目标电脑的密钥,以及密码仓库内容均与原电脑保持一致。
Android设备中密码管理
Android版本的pass + gpg软件: https://github.com/android-password-store/Android-Password-Store
未使用,可自行探索