如何在 Ubuntu 16.04 上正確啟動 gpg-agent

如何在 Ubuntu 16.04 上正確啟動 gpg-agent

我有一個加載了 gpg 金鑰的 Yubikey4,充當智慧卡。我可以做到gpg2 card-status,它給了我整個shebang,顯示了我所有的子密鑰,一切都很好。

然後我想使用 gpg-agent 使用我的 gpg 金鑰 ssh 到遠端主機。我將以下內容添加到我的~/.gnupg/gpg-agent.conf

enable-ssh-support
pinentry-program /usr/bin/pinentry-curses
default-cache-ttl 60

我還在我的 .bashrc 中設定SSH_AUTH_SOCK如下:

export SSH_AUTH_SOCK=~/.gnupg/S.gpg-agent.ssh

如果我隨後重新啟動計算機,則密鑰將被添加並可見ssh-add -l

4096 SHA256....... cardno: ..... (RSA)

但是任何 ssh 到遠端伺服器的嘗試都會掛起,ssh -vvv告訴我機器嘗試簽名並發送金鑰,但代理拒絕操作。

如果我然後執行使用各種來源製作的腳本,那麼一切都會起作用。

   killall gpg
   export SSH_AUTH_SOCK=~/.gnupg/S.gpg-agent.ssh; gpg-agent --daemon --keet-tty --use-standard-socket --pinentry-program=/usr/bin/pinentry-curses 

我嘗試使用 bashrc 實現此操作,並使用我的 deskopt-manager 和用戶 systemd 任務執行它,但無濟於事。

誰能幫我弄清楚如何在登入時自動啟動它,而不需要執行「我的腳本」?

答案1

簡短回答:

以 root 身分執行:

$ echo enable-ssh-support >> ~/.gnupg/gpg-agent.conf
# editor /etc/X11/Xsession.options
    ... comment out "use-ssh-agent" ...
# aptitude purge libpam-gnome-keyring

登出您的桌面會話並再次登錄,並檢查 $SSH_AUTH_SOCK 是否指向您的 gpg-agent。

解釋 :

預設情況下,gpg-agent 不啟用其 SSH 代理程式。這是透過傳遞--enable-ssh-support命令列或透過向設定檔中新增一行(如上所示)來完成的。

二、其他SSH代理的問題。 OpenSSH 代理程式預設啟動,透過 /etc/X11/Xsession.d/90x11-common_ssh-agentx11-common 套件進行設定。如果執行 GNOME,GNOME 密鑰環代理也會運作。這兩者都會幹擾我們的 GnuPG 代理。

禁用 OpenSSH 代理程式是透過/etc/X11/Xsession.options如上所述進行編輯。

停用 GNOME 密鑰環代理可能會更複雜一些。使用 Xfce,可以卸載 libpam-gnome-keyring 軟體包並確保 Xfce 不會啟動 GNOME 服務(設定 → 會話和啟動 → 進階 → 啟動時啟動 GNOME 服務– 若勾選則取消勾選)。

故障排除

如果畢竟 SSH_AUTH_SOCK 仍未指向您的 gpg 代理,則可能有另一個代理程式仍在幹擾您的 GnuPG 代理程式。 SSH_AGENT_PID 變數應包含代理程式進程的 PID,這將有助於找出該代理程式。

來源 : 我完美的 GnuPG / SSH 代理設置

答案2

將腳本放入/etc/profile.d.確保可執行位元設定 ( chmod +x) 且檔案具有.sh副檔名。

相關內容