Bash
unix pass - 使用 PASSWORD_STORE_GPG_OPTS 傳遞密碼
以下是通行證資訊:https ://www.passwordstore.org
我的重點是,我想在命令行中傳遞密碼密鑰。但是,我可以找到的與此問題相關的主題和解決方案不適用於我的情況。
當我檢查 Pass 的程式碼時,我發現了一個名為 PASSWORD_STORE_GPG_OPTS 的參數。據我所知,應該可以使用它將*–pinentry-mode=loopback –passphrase “<password_here>"*傳遞給 Pass 執行的 gpg。執行它的程式碼片段在這裡:
#Line 9 GPG_OPTS=( $PASSWORD_STORE_GPG_OPTS "--quiet" "--yes" "--compress-algo=none" "--no-encrypt-to" ) #(...) #Line 387 pass="$($GPG -d "${GPG_OPTS[@]}" "$passfile" | $BASE64)" || exit $?
但是,由於某種原因,這不起作用。
那麼問題來了,是否可以使用這個參數將密碼傳遞給 gpg 並在沒有提示的情況下使用 pass?如果沒有,那麼還有其他方法可以做到嗎?
編輯:正如@they 所建議的,這裡是關於我在做什麼的資訊:
設置變數:
export PASSWORD_STORE_GPG_OPTS="--pinentry-mode=loopback --passphrase '<password_goes_here>'"
備註:密碼僅包含大小寫字母和數字 - 沒有空格或其他字元。
然後,使用以下命令執行傳遞:
pass address/to/some/password
結果是:
gpg: decryption failed: No secret key
就我而言,正如@they 所建議的那樣,問題在於使用(出於未知原因……)引號。沒有他們,一切都像魅力一樣運作。
作為從字元串讀取密碼的替代方法,如上所述,密碼片語也可以通過某些文件處理:
export PASSWORD_STORE_GPG_OPTS="--pinentry=loopback --passphrase-file /path/to/.passphrase"
使用散列密碼似乎是不可能的(例如,使用
mkpasswd -m sha-512 passphrase > /path/to/.passphrase-hashed
),因此需要以純文字形式給出。