Linux Pass密码管理

  1. 安装pass

    sudo apt-get install pass

    echo "source /etc/bash_completion.d/password-store" >> ~/.bashrc

  2. 生成密钥对

    gpg --gen-key

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    gpg (GnuPG) 1.4.20; Copyright (C) 2015 Free Software Foundation, Inc.
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.

    gpg: 钥匙环‘/home/wayde/.gnupg/secring.gpg’已建立
    gpg: 钥匙环‘/home/wayde/.gnupg/pubring.gpg’已建立
    请选择您要使用的密钥种类:
    (1) RSA and RSA (default)
    (2) DSA and Elgamal
    (3) DSA (仅用于签名)
    (4) RSA (仅用于签名)
    您的选择?
    RSA 密钥长度应在 1024 位与 4096 位之间。
    您想要用多大的密钥尺寸?(2048)
    您所要求的密钥尺寸是 2048 位
    请设定这把密钥的有效期限。
    0 = 密钥永不过期
    <n> = 密钥在 n 天后过期
    <n>w = 密钥在 n 周后过期
    <n>m = 密钥在 n 月后过期
    <n>y = 密钥在 n 年后过期
    密钥的有效期限是?(0)
    密钥永远不会过期
    以上正确吗?(y/n) y

    您需要一个用户标识来辨识您的密钥;本软件会用真实姓名、注释和电子邮件地址组合
    成用户标识,如下所示:
    “Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>”

    真实姓名: Wayde
    电子邮件地址: lynnheavn@126.com
    注释:
    您选定了这个用户标识:
    “Wayde <lynnheavn@126.com>”

    更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)? o
    您需要一个密码来保护您的私钥。

    我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
    鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
    .........+++++
    ..+++++
    我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
    鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。

    随机字节不够多。请再做一些其他的琐事,以使操作系统能搜集到更多的熵!
    (还需要57字节)
    ......
    随机字节不够多。请再做一些其他的琐事,以使操作系统能搜集到更多的熵!
    (还需要119字节)
    ......
    /home/wayde/.gnupg/trustdb.gpg:建立了信任度数据库
    gpg: 密钥 1613CE21 被标记为绝对信任
    公钥和私钥已经生成并经签名。

    gpg: 正在检查信任度数据库
    gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型
    gpg: 深度:0 有效性: 1 已签名: 0 信任度:0-,0q,0n,0m,0f,1u
    pub 2048R/1613CE21 2018-03-10
    密钥指纹 = A2E6 2AED AABB 6CA3 A190 AABB 61DC 65E6 AABB CE21
    uid Wayde <lynnheavn@126.com>
    sub 2048R/9A9237B5 2018-03-10
  3. 备份密钥对

    查看密钥信息 gpg --list-keys

    导出私钥 gpg --export-secret-keys --armor 1613CE21 > ~/Profile/pass_gpg_privkey.asc

    导出公钥 gpg --export --armor 1613CE21 > ~/Profile/pass_gpg_pubkey.asc

  4. 导入密钥对

    导入公钥 gpg --import ~/Profile/pass_gpg_privkey.asc

    导入私钥 gpg --import ~/Profile/pass_gpg_pubkey.asc

  5. 初始化

    pass init 1613CE21

    pass git init

    pass git remote add origin pass-repository-url

  6. 添加记录

    pass insert test/wayde

  7. 多行添加

    pass insert email -m

  8. 密码显示在屏幕

    pass test/wayde

  9. 密码复制到剪贴板(45s后自动清空)

    pass -c test/wayde

  10. 删除记录

    pass rm test/wayde

  11. 生成并存储新密码

    eg. 生成一个具有10个字符不带符号的密码,并将它存储到 “email/new_service.com”列表中

    pass generate email/new_service.com 10 -n

    eg. 生成一个由 15 个字符组成的密码:包含字母,数字和特殊符号

    pass generate mysite 15

    –no-symbols 只包含字母和数字

    –clip or -c 密码直接拷贝到剪切板

    –qrcode or -q 生成二维码

    同时支持 pass mv | cp | rm

  12. 新机器同步pass

    1. 导入密钥对
    2. 安装pass
    3. git clone pass-repository-url .password-store/
    4. pass即可查看
  • 遇到问题:

    1. gpg: decryption failed: No secret key

      1
      2
      3
      4
      5
      gpg --export [ID] | gpg2 --import
      gpg --export-secret-keys [ID] | gpg2 --import

      gpg --export $(cat ~/.password-store/.gpg-id) | gpg2 --import
      gpg --export-secret-keys $(cat ~/.password-store/.gpg-id) | gpg2 --import
      1
      2
      3
      4
      5
      6
      7
      # 直接用gpg解密(成功)
      gpg -d .password-store/Soft/tplink-ID.gpg

      # 直接用gpg2解密(失败)
      gpg2 -d .password-store/Soft/tplink-ID.gpg
      # gpg: public key decryption failed: Permission denied
      # gpg: decryption failed: No secret key

      ps: 尚未解决

      参考资料:

      gpg: decryption failed: No secret key #92

      Trust in a key’s owner

    2. gpg: 9A9237B5:没有证据表明这把密钥真的属于它所声称的持有者
      gpg: /dev/shm/pass.sZAxIBItx71YV/6uwLt-Shopping-Amazon.txt: encryption failed: 不可用公钥
      GPG encryption failed. Would you like to try again? [y/N]

      1
      2
      3
      4
      5
      gpg --list-keys
      gpg --edit-key 1613CE21
      trust
      5 (设置成绝对信任)
      quit

参考资料:
使用 pass 密码管理器管理你的密码
如何在Linux上使用命令行管理密码
pass: 以 Unix 之道来管理密码
GPG入门教程
Using password-store with git repository synchingGnuPG (简体中文))