パスワード管理ツールpassについて

#はじめに
パスワード管理するのに1passwordを買って利用していました。(月払の前に)
1passwordはすごいけど毎月お金は払いたくなかったので悩んでいました。
あるコミュニティーでpassの記事を見て「これだ」と思いました。
CLI環境でパスワード管理が出来る良いツールpassについてのメモです。

#やりたいこと
- GPGの導入
- passの導入

#環境
ubuntu 20.04

#GPGの導入
GnuPG (PGP : Pretty Good Privacy)
暗号化ソフトウェア
私もGPGに詳しくないので下記のURLを参考 [ここ](https://qiita.com/y518gaku/items/435838097c700bbe6d1b#gpg%E3%81%A8%E3%81%AF)

## インストール
```
yum install gnupg2
```
##鍵の生成
```
gpg2 --full-gen-key
```

実際生成してみたらこんな感じです。

```
root@b41dda24a688:/# gpg2 --full-gen-key
gpg (GnuPG) 2.2.19; Copyright (C) 2019 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.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
  (14) Existing key from card
Your selection?
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (3072)
Requested keysize is 3072 bits
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y

GnuPG needs to construct a user ID to identify your key.

Real name: Spider-Man
Email address:
Comment: pass test
You selected this USER-ID:
    "Spider-Man (pass test)"
〜
諸略
〜

pub   rsa3072 2021-12-25 [SC]
      F5B6DA3F9275602FFF594E3E4BEE7AEC82XXXXXX
uid                      Spider-Man (pass test)
sub   rsa3072 2021-12-25 [E]

root@b41dda24a688:/#
```
passphraseを入れる画面が最後に出るので入れます。
passphraseは作成したパスワードを確認するときに利用するので覚えておきます。

作成した鍵の確認

```
root@b41dda24a688:/# gpg --list-keys
gpg: checking the trustdb
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
/root/.gnupg/pubring.kbx
------------------------
pub   rsa3072 2021-12-15 [SC]
      F5B6DA3F9275602FFF594E3E4BEE7AEC82XXXXXX
uid           [ultimate] Spider-Man (pass test)
sub   rsa3072 2021-12-15 [E]

root@b41dda24a688:/#
```

後ろの８バイトがKey ID 「82XXXXXX」です。

# passの導入
ここからが本番です。
passはCLIでpasswordの管理が出来るツールです。
gitを利用して共有も簡単に出来ます。
詳しい説明は [passwordstore](https://www.passwordstore.org/) ここに


## インストール

```
apt-get install pass
```

## passの初期化
先作成したKey IDを利用します。

```
pass init 82XXXXXX
```
やってみると

```
root@b41dda24a688:/# pass init 82XXXXXX
mkdir: created directory '/root/.password-store/'
Password store initialized for 82XXXXXX
root@b41dda24a688:/# pass
Password Store
root@b41dda24a688:/#
```
初期化完了です。

##パスワード作成
パスワードを作成してみます。
 
```
pass generate [Path/to/credential] [password length]
```
やってみると

```
root@b41dda24a688:/# pass generate site/google.com 16
mkdir: created directory '/root/.password-store/site'
The generated password for site/google.com is:
Z`e@^[knB-+3RX]I
root@b41dda24a688:/#
```

「Z`e@^[knB-+3RX]I」16文字のパスワードが作成されました。

```
pass insert -m [Path/to/credential]
```
上記のようにinsertすると情報などを入力することも出来ます。

##パスワード確認
これからは保存してあるパスワードを確認します。

```
root@b41dda24a688:/# pass
Password Store
`-- site
    `-- google.com
root@b41dda24a688:/#
```
すべてのパスワードの一覧が確認出来ます。
google.comのパスワードを見たい時には

```
root@b41dda24a688:/# pass site/google.com
Z`e@^[knB-+3RX]I
root@b41dda24a688:/#
```
passphraseを入れると先作成したパスワードが見れます。

詳しくoptionは[passwordstore](https://www.passwordstore.org/)で確認お願いします。



## gitを利用
gitを利用することが可能です。
これで他のPCやiphoneなので共有することが簡単にできます。
ios アプリは [こちら](https://apps.apple.com/us/app/pass-password-store/id1205820573)

### gitの初期化、使い方

```
pass git init
pass git remote add origin [Repository address]
pass git push -u origin master
...

pass git pull
pass git push
```
passの後ろにgitをつけると私達が知っているgitを使えます。

### gitで共有される中身
保存したパスワードは「/[User]/.password-store」の中に暗号化されて保存されます。

```
root@b41dda24a688:~/.password-store# pwd
/root/.password-store
root@b41dda24a688:~/.password-store# ll
total 24
drwx------ 4 root root 4096 Dec 15 02:45 ./
drwx------ 1 root root 4096 Dec 15 02:21 ../
drwx------ 7 root root 4096 Dec 15 02:45 .git/
-rw------- 1 root root   15 Dec 15 02:45 .gitattributes
-rw------- 1 root root    9 Dec 15 02:21 .gpg-id
drwx------ 2 root root 4096 Dec 15 02:39 site/
root@b41dda24a688:~/.password-store# cat site/google.com.gpg
��ܔڻt��
hՏ�nP���{ǃ�ۆ�L˺�=��v��B��m��r1�EH�Yδ�@�-��J���܅�S���D��ׇ>��=������5с@/�9Vp�����a������k��&�JX��H�W|��}ār��7�H�}���J��Wߓk�7�^����	�����+Wߣ�gs�g4n\A�vv�I��P����tw��!%
Π�T���`����%��
              ����tD�����MpJEB���kA��驟R��s_��y-���#���OğI��ڣ�#�
                                                                 H���������>�́{t�31���ͣ������W�������B
����
����}���͖�_�Zz�c)�z��~���W>�]
root@b41dda24a688:~/.password-store#
```
site/google.com.gpgの中身は暗号化されています。
それをgitで共有する感じです。
もちろん、内容を見る時はさきほど利用した秘密鍵が必要です。

#最後に
GPGで暗号化するのでGPGについても勉強したりしないとですが
かなり便利です。
iOSでは顔認証で自動入力も可能なので、さらに便利です。
初期化する時鍵を複数追加すると他の人たちと利用することも可能になります。

#参考
https://www.passwordstore.org/
https://www.clien.net/service/board/lecture/12700741
https://termina.io/posts/pass-overview
passを教えてくれたヤンさんありがとうございます。