gpg-agent 拒絕 SSH 密鑰並 ssh-add 報告“代理拒絕操作”
我在arch linux上使用openssh7.5p1和gnupg 2.1.21(這些是arch附帶的預設版本)。我想
gpg-agent
用作 ssh 代理。我把以下內容放在我的~/.gnupg/gpg-agent.conf
:pinentry-program /usr/bin/pinentry-qt enable-ssh-support
Arch 自動從 systemd 啟動一個 gpg-agent,所以我設置
export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gnupg/S.gpg-agent.ssh"
當我執行時
ssh-add -l
,它不報告任何身份並ps
報告gpg-agent --supervised
我所期望的程序。不幸的是,當我執行時
ssh-add
,無論是什麼鍵類型,它都不起作用。這是我如何嘗試 dsa 的範例:$ ssh-keygen -f testkey -t dsa -N '' Generating public/private dsa key pair. Your identification has been saved in testkey. Your public key has been saved in testkey.pub. $ ssh-add testkey Could not add identity "testkey": agent refused operation
所有其他 gpg 功能正常工作(加密/解密/簽名)。此外,如果我直接將它們與 ssh 一起使用,我生成的密鑰可以正常工作,如果我執行
ssh-agent
openssh 附帶的密鑰,它們可以正常工作。文件說
ssh-add
應該將鍵添加到~/.gnupg/sshcontrol
,但顯然沒有發生任何事情。我的問題:將openssh生成的密鑰載入到的最簡單方法是什麼
ssh-keygen
,gpg-agent
有人可以剪切並粘貼一個終端會話來顯示它是如何工作的嗎?
答案顯然是執行:
echo UPDATESTARTUPTTY | gpg-connect-agent
我不知道為什麼 pinentry 程序可以很好地用於其他用途,例如解密文件,但不適用於
ssh-add
.雖然這現在有效,但它也會複製 ssh 私鑰的副本,該副本不會顯示在 下
gpg -Kv
,而且似乎不允許您更改私鑰上的密碼(因為您無法使用 編輯它--edit-key
) . 基本上,我對這種方式gpg-agent
讓你的秘密被複製的地方的可見性很低。如果您遇到這個問題是因為您希望gpg-agent
可能是 的更好選擇ssh-agent
,那麼我鼓勵您堅持ssh-agent
而不是嘗試我的答案。首選的主要原因gpg-agent
是如果您需要使用智能卡。