GnuPG 的奇怪錯誤:當終端太小時聲稱“沒有密鑰”
這是我的內容
.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
未設置時相同,從而避免此錯誤。