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