在 Linux 終端里管理你的密碼
如今,我們每個(gè)人都有幾十個(gè)密碼。幸運(yùn)的是,這些密碼大部分幾乎都是網(wǎng)站的,你可能通過互聯(lián)網(wǎng)瀏覽器訪問大部分網(wǎng)站,而許多瀏覽器都有內(nèi)置的密碼管理器。最流行的互聯(lián)網(wǎng)瀏覽器也有一個(gè)同步的功能,可以幫助你在各種設(shè)備上運(yùn)行的瀏覽器之間分發(fā)密碼,所以當(dāng)你需要時(shí),絕不會(huì)找不到你的登錄信息。如果這不能夠滿足你,還有類似 BitWarden? 這樣優(yōu)秀的開源項(xiàng)目也可以托管你加密后的密碼,確保只有你自己才能解鎖它們。這些方案有助于你輕松維護(hù)獨(dú)特的密碼,我使用這些方便系統(tǒng)來管理一些密碼。但是我的主密碼存儲(chǔ)庫比以上這些方式簡單的多。我主要是使用 pass ,這是一個(gè)經(jīng)典的 UNIX 式密碼管理系統(tǒng),使用 GnuPG(GPG)作為加密方式,終端是它的主要界面。
安裝 pass
你可以從你的發(fā)行版?zhèn)}庫中安裝 ??pass?
? 命令。
在 Fedora、Mageia 和類似的發(fā)行版上,你可以用你的包管理器來安裝它:
$ sudo dnf install pass
在 Elementary、Mint 和其它基于 Debian 的發(fā)行版上:
$ sudo apt install pass
在 macOS 上,你可以使用 ??Homebrew?? 來安裝它:
$ brew install pass
設(shè)置 GnuPG
在使用 ??pass?
? 之前,你需要一個(gè)有效的 PGP(良好隱私Pretty Good Privacy)密鑰。如果你已經(jīng)維護(hù)了一個(gè) PGP 密鑰,你可以跳過這個(gè)步驟,或者你可以選擇為使用 ??pass?
? 而創(chuàng)建一個(gè)新的密鑰。最常見的開源 PGP 實(shí)現(xiàn)是 GnuPG(GPG),它隨 Linux 一起提供。對于 macOS,你可以從 ??gpgtools.org??、Homebrew 或者 ??Macports?? 安裝它。要?jiǎng)?chuàng)建 GnuPG 密碼,運(yùn)行這個(gè)命令:
$ gpg --generate-key
你會(huì)被提示輸入你的名字和電子郵件,并且為密鑰創(chuàng)建一個(gè)密碼。你的密鑰是一個(gè)數(shù)字文件,你的密碼只有你自己知道。它倆組合起來能夠“加鎖”和“解鎖”加密信息,比如包含密碼的文件。
GPG 密鑰更像是一個(gè)房門鑰匙或者汽車鑰匙,如果你失去了它,它“鎖起來”的任何東西都會(huì)變得無法獲得。僅僅知道你的密碼是不夠的。
如果你已經(jīng)管理了幾個(gè) SSH 密鑰,你可能已經(jīng)習(xí)慣了這一點(diǎn)了。如果你對數(shù)字加密密鑰是個(gè)新手,可能得花些時(shí)間來適應(yīng)。備份你的 ??~/.gnupg?
? 目錄,這樣當(dāng)你下次心血來潮決定嘗試一個(gè)令人興奮的新發(fā)行版時(shí),你就不會(huì)意外地刪除它。
做一個(gè)備份,并保持備份安全。
設(shè)置 pass
要開始使用 ??pass?
? ,你必須初始化一個(gè) 密碼倉庫 ,它定義為一個(gè)儲(chǔ)存位置,配置為使用特定加密密鑰。你可以通過與密鑰相關(guān)聯(lián)的名稱或數(shù)字指紋來指明要用于密碼存儲(chǔ)的 GPG 密鑰。你自己的名字通常更容易選擇:
$ pass init seth
mkdir: created directory '/home/seth/.password-store/'
Password store initialized for seth
如果你忘記了你的名稱,你可以使用 ??gpg?
? 命令查看數(shù)字指紋和關(guān)聯(lián)你名稱的密鑰:
$ gpg --list-keys
gpg --list-keys
/home/seth/.gnupg/pubring.kbx
-----------------------------
pub ed25519 2022-01-06 [SC] [expires: 2024-01-06]
2BFF94286461216C907CBA52F067996F13EF10D8
uid [ultimate] Seth Kenlon <[seth@example.com][7]>
sub cv25519 2022-01-06 [E] [expires: 2024-01-06]
用指紋初始化密碼庫與用你的名字初始化密碼庫基本相同:
$ pass init 2BFF94286461216C907CBA52F067996F13EF10D8
存儲(chǔ)密碼
使用 ??pass add?
? 命令添加密碼到你的密碼倉庫:
$ pass add [www.example.com][8]
Enter password for [www.example.com][8]:
提示你鍵入你要添加的密碼。
密碼現(xiàn)在存儲(chǔ)到了你的密碼倉庫中。你可以自己查看一下:
$ ls /root/.password-store/
www.example.com.gpg
當(dāng)然,這個(gè)文件是不可讀的,并且你嘗試對它運(yùn)行 ??cat?
? 或 ??less?
? 時(shí),在你的終端上會(huì)顯示亂碼(如果擾亂了你的顯示,可以使用 ??reset?
? 命令來恢復(fù)你的終端。)
用 pass 編輯密碼
我使用不同的用戶名稱進(jìn)行不同的上網(wǎng)活動(dòng),所以網(wǎng)站的用戶名常常和密碼同樣重要。??pass?
? 是有這個(gè)功能的,即使它默認(rèn)狀態(tài)下并不提示你。你可以使用 ??pass edit?
? 命令添加用戶名到密碼文件:
$ pass edit www.example.com
這會(huì)打開一個(gè)編輯器(一般是你設(shè)置為 ??EDITOR?
? 或者 ??VISUAL?
? ??環(huán)境變量?? 的編輯器) 顯示 ??www.example.com?
? 文件的內(nèi)容。目前,那僅僅是一個(gè)密碼,但是你可以添加用戶名甚至網(wǎng)址或者你想要添加的任何信息。它是個(gè)加密了的文件,所以你可以把你要放的任何東西放到里邊。
bd%dc$3a49af49498bb6f31bc964718C
user: seth123
url: example.com
保存文件然后關(guān)閉。
從 pass 獲取密碼
要查看密碼文件的內(nèi)容,使用 ??pass show?
? 命令:
$ pass show www.example.com
bd%dc$3a49af49498bb6f31bc964718C
user: seth123
url: www.example.org
查找密碼
有時(shí)候很難記住一個(gè)密碼是歸入到 ??www.example.com?
? 還是 ??example.com?
?,又或者一些類似 ??app.example.com?
? 的網(wǎng)址。此外,一些網(wǎng)站架構(gòu)使用不同的 URL 來實(shí)現(xiàn)不同的網(wǎng)站功能,所以你可能在 ??www.example.com?
? 網(wǎng)址下填寫過密碼,你同時(shí)也用相同的登錄信息在合作網(wǎng)站 ??www.example.org?
? 下使用過密碼。
如果有疑問,可以使用 ??grep?
? 命令。??pass grep?
? 命令顯示整個(gè)搜索項(xiàng)目的實(shí)例,無論是在文件名中還是在文件內(nèi)容中:
$ pass grep example
www.example.com:
url: www.example.org
在瀏覽器中使用 pass
我使用 ??pass?
? 來獲取互聯(lián)網(wǎng)密碼以外的信息,但是網(wǎng)站是我經(jīng)常需要密碼的地方。我常常在電腦上的某個(gè)地方打開一個(gè)終端,所以我通過 ??Alt+Tab?
? 鍵切換到終端用 ??pass?
? 來獲取信息并不麻煩。但是我并不這么做是因?yàn)橛幸恍┎寮梢詫?nbsp;??pass?
? 與網(wǎng)頁瀏覽器整合在一起。
pass 托管腳本
首先,安裝 ??pass?
? 托管腳本:
$ curl -sSL github.com/passff/passff-host/release/latest/download/install_host_app.sh
這個(gè)腳本放置了一個(gè) Python 腳本,幫助你的瀏覽器訪問你的密碼和 GPG 密碼。用你所用的瀏覽器的名字運(yùn)行它(或者不寫參數(shù),查看全部選項(xiàng)):
$ bash ./install_host_app.sh firefox
如果你使用多個(gè)瀏覽器,你可以為每一個(gè)瀏覽器安裝它。
pass 附件
一旦你已經(jīng)安裝了這個(gè)托管程序,你可以為你的瀏覽器安裝一個(gè)附件或者擴(kuò)展。在你的瀏覽器附件或者擴(kuò)展管理器里搜索 ??PassFF?
? 插件。
PassFF
安裝了這個(gè)附件,然后關(guān)閉并重新打開瀏覽器。
導(dǎo)航到一個(gè)你在密碼倉庫中存有密碼的網(wǎng)站。在你的登錄文本框右側(cè)會(huì)顯示一個(gè)小小的 “P” 圖標(biāo)。
PassFF browser prompt
點(diǎn)擊 “P” 按鈕會(huì)看到你的密碼倉庫中與你網(wǎng)站名稱匹配的一個(gè)列表。
PassFF browser menu
點(diǎn)擊“紙和筆”的圖標(biāo)填寫表單,或者通過“紙飛機(jī)”的圖標(biāo)填寫并自動(dòng)提交表單。
輕松的密碼管理,而且完全整合了!
嘗試用 pass 作為你的 Linux 密碼管理器
對于那些想用日常使用的工具來管理密碼和個(gè)人信息的用戶來說,??pass?
? 命令是一個(gè)很好的選擇。如果你已經(jīng)依賴 GPG 和終端,那么你可能會(huì)喜歡 ??pass?
? 系統(tǒng)。對于那些不想讓他們的密碼被束縛在特定程序上的用戶來說,這也是一個(gè)重要的選擇??赡苣悴⒉恢皇褂靡粋€(gè)瀏覽器,或者你不喜歡這種想法,即如果你決定停止使用一個(gè)應(yīng)用程序,可能很難從它那里提取你的密碼。使用 ??pass?
? ,你可以在一個(gè) UNIX 式的直接系統(tǒng)中保持對你的秘密的控制。