Terminal

GnuPG 的奇怪錯誤:當終端太小時聲稱“沒有密鑰”

  • February 24, 2021

這是我的內容.gnupg/gpg-agent.conf

pinentry-program /usr/bin/pinentry-curses

當我嘗試從pass’ 商店中檢索密碼時,例如通過pass -c path/to/password在一個非常小的終端視窗中,命令錯誤如下:

gpg: decryption failed: No secret key

所以這是 GnuPG 的一個錯誤,我相信是因為 ncurses 沒有足夠的空間來繪製 pinentry 對話框。

任何人都可以重現這個嗎?如果是這樣,我在哪裡可以報告這個錯誤?

在此處輸入圖像描述

每當您報告(疑似)錯誤時,您應該說明您觀察到的行為以及您的預期。因此,在這種情況下,當您使用 GnuPG 打開錯誤報告時,您應該說明您認為應該發生的情況。如果您在此處添加它,您應該編輯問題,而不是僅在評論中添加它。另請參閱底部的建議。

是的,發生這種情況是因為視窗太小。它也不是源自 GnuPG:GnuPG 只是呼叫pinentry-program您在配置中指定的。

有關發生的詳細資訊,我們可以嘗試手動呼叫它。

$ stty cols 20 rows 10
$ pinentry-curses 
OK Pleased to meet you
GETPIN
S ERROR curses.dialog_create 83886381 
ERR 83886381 Screen or window too small <Pinentry>

這裡我先把 tty 的尺寸變小了,然後呼叫pinentry-curses. 它等待一個命令,我輸入GETPIN了獲取 PIN 的命令。它抱怨螢幕太小而無法顯示對話框。GnuPG 只是報告它無法獲得 PIN。

我看到了你寫的票,但你提出的建議介於困難和不可能之間,因為gpg不應該關心終端大小,因此不應該聲稱終端太小。

相反,我建議使用以下文本(我不想在那裡創建帳戶):

gpg``pinentry-program如果需要解密密鑰,則呼叫。pgp如果不顯示通用消息

decryption failed: No secret key

而是從 轉發消息,對使用者來說會更好pinentry-program,例如:

Can't decrypt key, pinentry-program failed with (text from ERR response)

此外,如果pinentry-curses由 gpg 團隊維護,它可以檢測到一個小視窗並且行為與$TERM未設置時相同,從而避免此錯誤。

引用自:https://unix.stackexchange.com/questions/635877