使用pass密碼管理器管理你的密碼
目標(biāo)
學(xué)習(xí)在 Linux 上使用 pass 密碼管理器來(lái)管理你的密碼
條件
- 需要 root 權(quán)限來(lái)安裝需要的包
難度
簡(jiǎn)單
約定
#
- 執(zhí)行指定命令需要 root 權(quán)限,可以是直接使用 root 用戶來(lái)執(zhí)行或者使用sudo
命令來(lái)執(zhí)行$
- 使用普通的非特權(quán)用戶執(zhí)行指定命令
介紹
如果你有根據(jù)不同的意圖設(shè)置不同密碼的好習(xí)慣,你可能已經(jīng)感受到需要一個(gè)密碼管理器的必要性了。在 Linux 上有很多選擇,可以是專有軟件(如果你敢用的話)也可以是開(kāi)源軟件。如果你跟我一樣喜歡簡(jiǎn)潔的話,你可能會(huì)對(duì) pass
感興趣。
***步
pass 作為一個(gè)密碼管理器,其實(shí)際上是一些你可能早已每天使用的、可信賴且實(shí)用的工具的一種封裝,比如 gpg
和 git
。雖然它也有圖形界面,但它專門設(shè)計(jì)能成在命令行下工作的:因此它也可以在 headless 機(jī)器上工作(LCTT 譯注:根據(jù) wikipedia 的說(shuō)法,所謂 headless 是指沒(méi)有顯示器、鍵盤和鼠標(biāo)的機(jī)器,一般通過(guò)網(wǎng)絡(luò)鏈接來(lái)控制)。
安裝
pass 在主流的 Linux 發(fā)行版中都是可用的,你可以通過(guò)包管理器安裝:
Fedora
# dnf install pass
RHEL 和 CentOS
pass 不在官方倉(cāng)庫(kù)中,但你可以從 epel
中獲取道它。要在 CentOS7 上啟用后面這個(gè)源,只需要執(zhí)行:
# yum install epel-release
然而在 Red Hat 企業(yè)版的 Linux 上,這個(gè)額外的源是不可用的;你需要從 EPEL 官方網(wǎng)站上下載它。
Debian 和 Ubuntu
# apt-get install pass
Arch Linux
# pacman -S pass
初始化密碼倉(cāng)庫(kù)
安裝好 pass
后,就可以開(kāi)始使用和配置它了。首先,由于 pass
依賴于 gpg
來(lái)對(duì)我們的密碼進(jìn)行加密并以安全的方式進(jìn)行存儲(chǔ),我們必須準(zhǔn)備好一個(gè) gpg 密鑰對(duì)。
首先我們要初始化密碼倉(cāng)庫(kù):這就是一個(gè)用來(lái)存放 gpg 加密后的密碼的目錄。默認(rèn)情況下它會(huì)在你的 $HOME
創(chuàng)建一個(gè)隱藏目錄,不過(guò)你也可以通過(guò)使用 PASSWORD_STORE_DIR
這一環(huán)境變量來(lái)指定另一個(gè)路徑。讓我們運(yùn)行:
$ pass init
然后 password-store
目錄就創(chuàng)建好了?,F(xiàn)在,讓我們來(lái)存儲(chǔ)我們***個(gè)密碼:
$ pass edit mysite
這會(huì)打開(kāi)默認(rèn)文本編輯器,我么只需要輸入密碼就可以了。輸入的內(nèi)容會(huì)用 gpg 加密并存儲(chǔ)為密碼倉(cāng)庫(kù)目錄中的 mysite.gpg
文件。
pass
以目錄樹(shù)的形式存儲(chǔ)加密后的文件,也就是說(shuō)我們可以在邏輯上將多個(gè)文件放在子目錄中以實(shí)現(xiàn)更好的組織形式,我們只需要在創(chuàng)建文件時(shí)指定存在哪個(gè)目錄下就行了,像這樣:
$ pass edit foo/bar
跟上面的命令一樣,它也會(huì)讓你輸入密碼,但是創(chuàng)建的文件是放在密碼倉(cāng)庫(kù)目錄下的 foo
子目錄中的。要查看文件組織結(jié)構(gòu),只需要不帶任何參數(shù)運(yùn)行 pass
命令即可:
$ pass
Password Store
├── foo
│ └── bar
└── mysite
若想修改密碼,只需要重復(fù)創(chuàng)建密碼的操作就行了。
獲取密碼
有兩種方法可以獲取密碼:***種會(huì)顯示密碼到終端上,方法是運(yùn)行:
pass mysite
然而更好的方法是使用 -c
選項(xiàng)讓 pass
將密碼直接拷貝到剪切板上:
pass -c mysite
這種情況下剪切板中的內(nèi)容會(huì)在 45
秒后自動(dòng)清除。兩種方法都會(huì)要求你輸入 gpg 密碼。
生成密碼
pass
也可以為我們自動(dòng)生成(并自動(dòng)存儲(chǔ))安全密碼。假設(shè)我們想要生成一個(gè)由 15 個(gè)字符組成的密碼:包含字母,數(shù)字和特殊符號(hào),其命令如下:
pass generate mysite 15
若希望密碼只包含字母和數(shù)字則可以是使用 --no-symbols
選項(xiàng)。生成的密碼會(huì)顯示在屏幕上。也可以通過(guò) --clip
或 -c
選項(xiàng)讓 pass
把密碼直接拷貝到剪切板中。通過(guò)使用 -q
或 --qrcode
選項(xiàng)來(lái)生成二維碼:
qrcode
從上面的截屏中可看出,生成了一個(gè)二維碼,不過(guò)由于運(yùn)行該命令時(shí) mysite
的密碼已經(jīng)存在了,pass
會(huì)提示我們確認(rèn)是否要覆蓋原密碼。
pass
使用 /dev/urandom
設(shè)備作為(偽)隨機(jī)數(shù)據(jù)生成器來(lái)生成密碼,同時(shí)它使用 xclip
工具來(lái)將密碼拷貝到粘帖板中,而使用 qrencode
來(lái)將密碼以二維碼的形式顯示出來(lái)。在我看來(lái),這種模塊化的設(shè)計(jì)正是它***的優(yōu)勢(shì):它并不重復(fù)造輪子,而只是將常用的工具包裝起來(lái)完成任務(wù)。
你也可以使用 pass mv
、pass cp
和 pass rm
來(lái)重命名、拷貝和刪除密碼倉(cāng)庫(kù)中的文件。
將密碼倉(cāng)庫(kù)變成 git 倉(cāng)庫(kù)
pass
另一個(gè)很棒的功能就是可以將密碼倉(cāng)庫(kù)當(dāng)成 git 倉(cāng)庫(kù)來(lái)用:通過(guò)版本管理系統(tǒng)能讓我們管理密碼更方便。
pass git init
這會(huì)創(chuàng)建 git 倉(cāng)庫(kù),并自動(dòng)提交所有已存在的文件。下一步就是指定跟蹤的遠(yuǎn)程倉(cāng)庫(kù)了:
pass git remote add <name> <url>
我們可以把這個(gè)密碼倉(cāng)庫(kù)當(dāng)成普通倉(cāng)庫(kù)來(lái)用。唯一的不同點(diǎn)在于每次我們新增或修改一個(gè)密碼,pass
都會(huì)自動(dòng)將該文件加入索引并創(chuàng)建一個(gè)提交。
pass
有一個(gè)叫做 qtpass
的圖形界面,而且也支持 Windows 和 MacOs。通過(guò)使用 PassFF
插件,它還能獲取 firefox 中存儲(chǔ)的密碼。在它的項(xiàng)目網(wǎng)站上可以查看更多詳細(xì)信息。試一下 pass
吧,你不會(huì)失望的!