
我正在使用 Mountain Lion,當我使用 gpg 加密檔案時,煩人的 GUI 會提示我輸入密碼。我希望在終端機中提示輸入密碼,而不是在外部 GUI 中。例如,我可能會遠端這樣做。
有沒有辦法讓 gpg for mac 在終端機中要求輸入密碼,而不是在 GUI 提示字元中要求輸入密碼?
更新:這對 gpg2 來說似乎很難,所以我已經降級到 gpg1。用 gpg2 (MacGPG2) 嘗試了一切,但沒有任何效果。糟透了!與 gpg1 一起工作正常!
答案1
以下假設您將 gnupg2 與 macports 一起使用,而不是 MacGPG2,但該修復可能適用於您的用例。
從 macports 安裝「pinentry」套件:
port -v install pinentry
編輯 ~/.gnupg/gpg-agent.conf 以適應:
pinentry-program /opt/local/bin/pinentry-curses
刪除或註解現有的「pinentry-program」條目。重新載入您的終端,或使用以下命令:
echo RELOADAGENT | gpg-connect-agent
完畢。您現在應該在終端機中有 pinentry/passphrase(詛咒對話框)。如果您希望擁有 inline-ttl pinentry 的舊 gpg v1.x 行為,您可以將自訂「./configure」命令與 macports pinentry 套件一起使用。
如果您之前安裝了適用於 Mac 的 MacGPG2 / GPG 工具,則可能需要在 pinentry 對話方塊執行(或重新啟動)之前終止「shutdown-gpg-agent」進程。
user$ ps ax |grep shutdown-gpg-agent
1854 ?? S 0:00.01 /bin/bash /usr/local/MacGPG2/libexec/shutdown-gpg-agent
user$ kill -KILL 1854
答案2
ssh
您可以透過檢查環境變數來檢查是否正在透過連線進行連線SSH_CONNECTION
。
export GPG_TTY=$(tty)
if [[ -n "$SSH_CONNECTION" ]] ;then
export PINENTRY_USER_DATA="USE_CURSES=1"
fi
我使用以下檢查來檢查我是否運行過度ssh
或過度:tmux
export GPG_TTY=$(tty)
if [[ -n "$SSH_CONNECTION" || -n "$TMUX" ]] ;then
export PINENTRY_USER_DATA="USE_CURSES=1"
fi
答案3
三個字:自己編譯。是的,你可以這麼做!不過,請務必先刪除 gpg-agent.conf 檔案!
答案4
我剛剛完成了 Mac OS High Sierra 的 GnuPG(版本 2.2.9)及其所有依賴項的編譯。這很有趣。在透過 libgcrypt 測試解決了一個小問題之後(在 Homebrew 的相應配方的幫助下),一切基本上都是開箱即用的。
在嘗試導入我的私鑰時,我無法導入,因為系統缺少 pinentry 程式。快速搜尋讓我登陸了這個頁面,但這並不是很有幫助,所以我決定自己編譯 pinentry。
根據我在 Linux 機器上使用 GnuPG 的經驗,我已經知道我希望在命令列的正常提示下輸入密碼,而不需要那些煩人的、破壞性的對話框。這就是我在這裡分享這個過程的原因。這很簡單,但可能會幫助遇到類似問題的人。
首先從 GnuPG 取得 pinentry 的原始碼。檢查他們的網站。在撰寫本文時,下載原始碼的連結是https://gnupg.org/ftp/gcrypt/pinentry/pinentry-1.1.0.tar.bz2。還下載簽名並使用 gpg 本身檢查真實性。
不要跳過驗證,這個很重要!該程式將有權存取您所有的 gpg 密碼和私鑰。您最好確保它是它聲稱的那樣!如果您遇到問題,請確保您已從 GnuPG 維護者處匯入金鑰(請參閱這裡):
$ gpg --verify pinentry-1.1.0.tar.bz2.sig pinentry-1.1.0.tar.bz2
現在您確定您正在使用真實的源文件,請提取原始程式碼並cd
在該目錄中:
$ tar xvf pinentry-1.1.0.tar.bz2
$ cd pinentry-1.1.0
編譯非常簡單:
$ ./configure --enable-pinentry-tty
$ make
$ sudo make install
可能會configure
抱怨缺少某些依賴項。在這種情況下,只需閱讀錯誤並從 GnuPG 網頁下載依賴項(請務必檢查下載的完整性!)。
上面指令的重要部分是 flag --enable-pinentry-tty
。 Pinentry TTY 是在命令列上以非常正常且無聊的提示符號輸入密碼的最簡單方法。正是我想要的!如果我沒記錯的話,curses
無論如何都會建立該版本。雖然它是一個 CLI 選項,但我發現它和其他選項一樣具有破壞性。
安裝完成後,您將在/usr/local/bin
.確保您已接到電話pinentry-tty
(如果沒有,則表示出了問題...)。
若要使該新二進位檔案成為輸入 gpg 密碼的預設方式,請將以下行新增至~/.gnupg/gpg-agent.conf
(如果檔案和目錄尚不存在,則建立檔案和目錄):
pinentry-program /usr/local/bin/pinentry-tty
如果您立即嘗試,它可能不起作用,因為您很可能仍然有一個使用舊配置運行的 gpg-agent。繼續殺死所有 gpg 代理並創建一個新的:
$ sudo killall gpg-agent
$ gpg-agent --daemon
就是這樣!享受你的老式 TTY pinentry :)