題 雙重還原失敗:沒有密鑰


我正在設置從本地計算機到遠程服務器的備份。
我在本地計算機上生成gpg密鑰並運行測試備份:

PASSPHRASE="MyGPGPassphrase" duplicity --encrypt-key KeyID test scp://user@server/path

備份似乎工作正常,在服務器上創建了三個文件。

我的問題是我無法恢復工作。
我刪除了本地計算機上的測試文件並嘗試使用以下命令恢復它:

PASSPHRASE="MyGPGPassphrase" duplicity --encrypt-key KeyID scp://user@server/path test

我收到以下錯誤:

Synchronizing remote metadata to local cache...
Copying duplicity-full-signatures.20151011T011134Z.sigtar.gpg to local cache.
GPGError: GPG Failed, see log below:
===== Begin GnuPG log =====
gpg: encrypted with 2048-bit RSA key, ID KeyID(of ssb), created 2015-10-11
"Name <email>"
gpg: public key decryption failed: Inappropriate ioctl for device
gpg: decryption failed: No secret key
===== End GnuPG log =====

我在本地計算機上導出了gpg密鑰:
gpg --export-secret-key KeyID > secret.key
gpg --armor --export KeyID > public.key 

並在服務器上導入它們:
gpg --import secret.key
gpg --import public.key

還原需要做些什麼才能恢復工作嗎?

編輯:
如果我在沒有PASSPHRASE環境的情況下執行命令 duplicity --encrypt-key Key D test scp://user@host/path 無論如何都要創建備份而不要求密碼。

輸出 file duplicity-full.20151011T115714Z.vol1.difftar.gpg 列出與--encrypt-key中指定的KeyID不同的KeyID。我的密鑰環中沒有列出的密鑰。


4
2017-10-11 02:00


起源


您確定已將密鑰導入正確的用戶嗎? GnuPG使用每用戶密鑰鏈,服務通常使用一些系統用戶而不是自己的密鑰環。 - Jens Erat
遠程計算機上只有一個用戶(root)。 - Pabi
可能與...有關 這個。簡而言之:不知何故 gpg 沒有要求密碼短語。 - Daniel B


答案:


問題是,就像發布的ede鏈接一樣,gpg 2.1從密鑰auth的管道中退出密碼。
需要啟用並配置gpg代理才能使還原生效。

添加以下內容 ~/.gnupg/gpg.conf

use-agent
pinentry-mode loopback

對你的 ~/gnupg/gpg-agent.conf

pinentry-program /usr/bin/pinentry-gtk-2
allow-loopback-pinentry

然後重啟代理 echo RELOADAGENT | gpg-connect-agent

即使密鑰僅在本地計算機上,還原也能正常工作。 我仍然不明白為什麼它在製作增量時不會要求密碼短語。


3
2017-10-11 14:11



第二個文件路徑缺少點。它應該是 ~/.gnupg/gpg-agent.conf (與前面提到的文件相同的目錄)。 - Sam


你在使用gpg 2.1嗎?如果是,如果你想通過env var傳遞密碼,則duplicity和gpg需要一些額外的參數。
https://lists.launchpad.net/duplicity-team/msg02653.html

或者只是不設置PASSPHRASE,gpg-agent會問你並記住你的秘密。


1
2017-10-11 11:13



我正在使用gpg 2.1.8。如果我在沒有密碼短語的情況下運行它: duplicity --encrypt-key KeyID test scp://user@host/path 它不會要求密碼,但無論如何都會創建備份。 - Pabi
做完之後的輸出 file duplicity-full.20151011T115714Z.vol1.difftar.gpg 列出與--encrypt-key中指定的KeyID不同的KeyID。我的密鑰環中沒有列出的密鑰。 - Pabi


我在使用時遇到過這個問題 sudo 執行 duplicity,這使它搜索私鑰 root的主目錄。沒有在其上找到私鑰,出現“無密鑰”錯誤 - 至少對我而言 - 並不是立即清楚原因。

解決這個問題的最簡單方法是避免使用 sudo在我的例子中,通過在目標目錄上設置正確的權限。

如果 sudo 是必須的,然後需要設置相應的GPG選項,以便它使用用戶的GPG鑰匙串:添加 --gpg-options "~user/.gnupg" 到duplicity命令,如 在這個答案上說

也許這有助於其他人:-)


1
2017-07-18 18:52



那你是怎麼解決的? - Pimp Juice IT
D'哦。添加到答案。謝謝你指出來。 - Pablo