2012-07-08 73 views
56

我試圖用duplicity自動執行備份,但是當我測試的結果,我得到如何使用GPG的命令行來檢查密碼是否正確

GPG:公鑰解密失敗:密碼錯誤

我想檢查我使用的密碼實際上是與相應的gpg祕密密鑰相關的密碼,但我在gpg命令行選項中看不到任何地方說「不加密或解密任何事情,只要確認我正在使用正確的密碼即可。「

這表明我可能(又是)誤解了Gnu隱私衛士。 (它傾向於嘲笑我,直到我哭泣。)

請問gpg驗證密碼是否合理?如果是這樣,怎麼樣?

回答

82

這樣做沒有內置的方法,但它足夠簡單,可以創建一個不會修改任何內容並允許您檢查密碼的測試。

您沒有指定,所以我會假設您使用的GnuPG版本低於v2,並且在Linux上使用Bash作爲您的命令行解釋器。

我會在這裏和下面我給該命令將解釋各個部件沒有 - (注:以下是有關GnuPG系列版本1,請參閱下面的GnuPG系列V2)

echo "1234" | gpg --no-use-agent -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"

那是什麼首先,請輸入一些文字以與echo "1234" |簽署GnuPG - 因爲我們不想簽署任何內容,這只是一個測試,所以我們將簽署一些無用的文本。

接下來,我們告訴gpg不要使用帶有--no-use-agent的密鑰代理;這在以後很重要,因爲取決於您的密鑰代理,它可能不會在成功時返回「0」,這就是我們想要做的 - 驗證您的密碼短語的成功。

接下來,我們告訴gpg將簽署的數據直接放入/dev/null文件,這意味着我們丟棄它並且不將結果寫入終端 - 注意:如果您沒有使用Linux/Unix的某種變體,則此文件可能不存在。在Windows上,您可能只需通過省略-o /dev/null部分就可以將其簽名的數據寫入屏幕。

接下來,我們通過使用--local-user指定我們想要測試的密鑰。您可以使用KeyID來獲得最大特異性,或者使用用戶名,無論您的需求最合適。

接下來我們指定-as,它啓用ascii輸出模式,並設置用於簽名的上下文模式。之後的-只是告訴GnuPG從標準輸入中獲取數據,這是我們給出的命令的第一部分echo "1234" |

最後,我們有&& echo "A message that indicates success" - 「& &」的意思是,如果前面的命令成功,則打印此消息。這只是爲了清楚起見而添加的,因爲上面的命令的成功否則會根本沒有輸出。

我希望這已經足夠清楚,讓你明白髮生了什麼,以及如何使用它來做你想做的測試。如果任何部分不清楚或者你不明白,我會很樂意澄清。祝你好運!

[編輯] - 如果使用的GnuPG V2,上述命令將需要稍微修改,例如:

echo "1234" | gpg2 --batch --passphrase-fd 1 -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"

其原因是,GnuPG的V2期望的口令通過檢索一個代理人,所以我們不能禁止使用--no-use-agent的代理人並具有預期的效果;相反,我們需要告訴GnuPG v2我們要運行「批處理」流程,並使用選項--passphrase-fd 1從STDIN(標準輸入)中檢索密碼。

+8

這不適用於gpg2,因爲它始終需要代理。另外,ncurses代理以某種方式被管道輸入弄糊塗了。所以我只是用'gpg --local-user -as'。這只是讓代理人詢問密碼並告訴你它是否正確(然後什麼都不做)。 – BubuIIC 2013-01-18 01:42:26

+1

你是正確的BubullC,大部分;對傳遞的選項稍作修改,您可以使用gpg2獲得類似的結果。我修改了我的答案以支持gpg和gpg2之間的差異。 – kylehuff 2013-01-21 16:37:41

+2

試試這個GnuPG 2.1:'gpg -o/dev/null --local-user -as <(echo 1234)&& echo「正確的密碼輸入了這個密鑰」 – starfry 2016-10-03 20:43:35

-2

只需將您的私鑰的密碼設置爲「」(空白)即可。這將允許您不在命令行中聲明密碼參數,而不會獲得密碼提示。

單個文件的命令行應再看看簡單的類似:

gpg -d file_to_decrypt.pgp 

或多個文件:

gpg -- batch --decrypt-files *.pgp 

注:更改您的密碼,你可以做到這一點通過命令行或使用Kleopatra或GPA(推薦)等GUI。

+0

這似乎不是問題的答案。 – Oddthinking 2017-10-03 19:02:01

相關問題