我搬到了另一台 Macbook。由於昂貴的 SSD 和非常小的磁碟大小,並且因為我想從這個安裝開始乾淨,所以我無法傳輸用戶資料夾。我連接了外接盒中的舊磁碟,發現我忘記匯出兩個私鑰。我想從外部磁碟或時間機器恢復它們。
在哪裡可以找到 GPG 工具私鑰,以便匯出它們,或複製整個 GPG 工具資料夾?
答案1
預設情況下,GnuPG 密鑰環儲存在(隱藏)資料夾中~/.gnupg
;換句話說,.gnupg
您的主目錄中的資料夾。您只需將整個資料夾複製到新機器即可。如果 GnuPG 之後無法正常運作或顯示一些指示權限損壞的錯誤訊息,請確保透過在終端應用程式中執行以下命令(它將查詢您的使用者密碼):
sudo chown -R $USER:staff ~/.gnupg
或者,您可以使用以下命令匯出您的金鑰
gpg --export-secret-keys [key-id] >secret-keys.gpg
命令。當您想要從舊磁碟恢復金鑰時,請將其連接到您的電腦。要在舊磁碟的 GnuPG 密鑰環上工作,請使用該--homedir
選項,這將導致類似的結果
gpg --homedir /Volumes/[old-disks-name]/Users/[username]/.gnupg --list-secret-keys
列出可用的密鑰,以及
gpg --homedir /Volumes/[old-disks-name]/Users/[username]/.gnupg --export-secret-keys [key-id] > secret-keys.gpg
導出它們。您也可以直接將它們匯入到新的 GnuPG 密鑰環中,而不是儲存在中間檔案中(觀察--homedir
GnuPG 呼叫中缺少的參數後管):
gpg --homedir /Volumes/[old-disks-name]/Users/[username]/.gnupg --export-secret-keys [key-id] | gpg --import
2019 年/macOS Catalina 更新:
可以安裝時間機器備份,但無法就地修改它們。這意味著 chown 將失敗,並且--homedir
如果沒有獲得以下流,則無法將該選項與 gpg 一起使用:
gpg: failed to create temporary file '/Volumes/<Backup Drive>/Backups.backupdb/<Compute Name>/Latest/Macintosh HD/Users/<name>/.gnupg/': Permission denied
gpg: can't connect to the agent: Permission denied
chown 將失敗並顯示如下訊息流:
$ sudo chown -R user:staff .gnupg
chown: .gnupg/tofu.db: Operation not permitted
chown: .gnupg/trustdb.gpg: Operation not permitted
chown: .gnupg: Operation not permitted
從 Time Machine 備份複製 .gnupg 資料夾,對其進行 chown,然後查看/提取私鑰,如下所示:
$ mkdir ~/gpg_recovery
$ cp -r /Volumes/<Backup Drive>/Backups.backupdb/<Compute Name>/Latest/Macintosh HD/Users/<name>/.gnupg ~/gpg_recovery/
$ cd ~/gpg_recovery/
$ sudo chown -R $USER:staff .gnupg
Password:
$ gpg --homedir ~/gpg_recovery/.gnupg --list-secret-keys
$ gpg --homedir ~/gpg_recovery/.gnupg --export-secret-keys | gpg --import
gpg: key xxxxxxxxxxxxxxxx: public key "xxxxxxxxxxxxxxxxxxxxxxx" imported
gpg: key xxxxxxxxxxxxxxxx: secret key imported
gpg: Total number processed: 1
gpg: imported: 1
gpg: secret keys read: 1
gpg: secret keys imported: 1
答案2
答案3
對 @jens-erat 的答案的一點補充:
匯出到文件:
gpg --output private_keys.backup --armor --export-secret-keys
SSH 導入
gpg --export-secret-key SOMEKEYID | ssh othermachine gpg --import