在 http_proxy 中避免使用純文字密碼
我在企業防火牆後面,這給代理領域帶來了很多麻煩。我發現有兩種主要的工作方法:
- 使用 Cntlm 的代價是無法(從命令行)連接到 HTTPS 和外部 SSH 位置。(Cntlm 允許您使用 PassNTLMv2 對您的使用者名和密碼進行雜湊處理(從而避免純文字)並設置
http://localhost:3128/
為您的代理,然後重定向到您的“真實”代理。正如我所提到的,我無法使用這種方法連接到 HTTPS 和外部 SSH。)- 將我的使用者名和密碼以純文字形式放在
http_proxy
變數中,代價是我的使用者名和密碼是純文字形式。顯然,如果安全不是問題,我只會選擇選項 2。
我找到了一些解決方案,在我的
.babrunrc
(我使用 Babun,它基本上是 Cygwin 有一點額外的,同樣的可能是在一個.bashrc
或.zshrc
雖然)export http_proxy="http://`echo "Y21hbjpwYXNzd29yZA==" | base64 -d`@20.20.20.20:20/"
這樣我的密碼至少是編碼的。如果有人來到我的電腦前輸入
echo $http_proxy
密碼,他們會看到我的密碼,但我認為沒有辦法解決這個問題。有沒有其他方法可以解決這個問題?或者也許是一種加密字元串而不是編碼的方法?如果沒有辦法繞過它,我不介意在打開提示時輸入一些密碼。
使用base64是沒有用的,只是簡單的轉換。使用與加密數據一起儲存的密鑰進行加密也是無用的,因為它仍然只是一個簡單的轉換。如果您擔心有人訪問您的配置文件,那麼您需要使用不在配置文件中的密鑰進行加密,這意味著您必須在登錄時輸入密碼¹。
與其自己製作,不如使用現有的加密機制。
在 Linux 上,如果您使用文件加密,請使用eCryptfs加密您的主目錄,或者使用 Linux 的磁碟加密層(dm-crypt,命令)加密整個磁碟,或者使用encfs
cryptsetup
創建一個小的按文件加密的文件系統。在後一種情況下,有一個安裝 encfs 文件系統的腳本,然後執行儲存在那裡的腳本。在 Windows 上,將文件放在TrueCrypt / VeraCrypt上。
或者,使用密碼管理器(當然要設置主密碼)。
secret-tool
Gnome 的密碼管理器 (gnome-keyring) 可以使用該實用程序從命令行查詢。Seahorse提供了一個方便的 GUI,用於探索和修改密鑰環以及設置主密碼。secret-tool store --label='Corporate web proxy password' purpose http_proxy location work.example.com export http_proxy="http://cman:$(secret-tool lookup purpose http_proxy location work.example.com)@192.0.2.3/"
這需要 D-Bus,它通常在 Linux 下預設可用(大多數現代桌面環境都需要它)但需要在 Cygwin 下手動啟動(我不知道具體如何)。
¹或以其他方式提供秘密材料,例如儲存在智能卡上。