小编Cal*_*ian的帖子

什么是 gpg、ssh 和 gpg-agent 在多会话 tmux 环境中将 GPG auth 子密钥用于 SSH 和 pinentry 的正确配置?

语境

我想使用 GPG 身份验证子密钥而不是 SSH 密钥。

我还想gpg-agent用来管理这些密钥的密码缓存。

我在无头环境中运行,所以我想pinentry-curses用于我的密码输入程序,但我对在无头环境中工作的任何东西都很好。

我的开发工作流程是这样的,我在多个tmux会话和窗格中工作,并且需要能够git push从其中任何一个中工作。

问题

当我尝试这样做时会出现问题。它不是pinentry在我当前的窗格中弹出,而是在随机的其他窗格中弹出(或者有时可能根本没有窗格,但可能有太多要搜索的窗格)。为了解决这个问题,我需要杀死那个窗格pinentry-curses,即使这样它有时仍然会失败。

我试过的

我试过的配置

我当前的配置如下,尽管在过去的几周里我尝试了很多尝试让它工作。

# ~/.zshrc

unset SSH_AGENT_PID
if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
  export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
fi

if [[ $SSH_AUTH_SOCK == /tmp/* ]]; then
    ln -sf $SSH_AUTH_SOCK $HOME/.ssh-agent-sock
    export SSH_AUTH_SOCK=$HOME/.ssh-agent-sock
fi

export GPG_TTY=$(tty)
gpg-connect-agent updatestartuptty /bye >/dev/null
Run Code Online (Sandbox Code Playgroud)
# ~/.gnupg/gpg-agent.conf

pinentry-program /usr/sbin/pinentry-curses
default-cache-ttl 600
max-cache-ttl 7200
enable-ssh-support
Run Code Online (Sandbox Code Playgroud)
# ~/.gnupg/gpg.conf

use-agent
Run Code Online (Sandbox Code Playgroud)
# ~/.gnupg/sshcontrol

MYFINGERPRINTS
Run Code Online (Sandbox Code Playgroud)
# ~/.ssh/config …
Run Code Online (Sandbox Code Playgroud)

ssh gpg ssh-agent gpg-agent

3
推荐指数
1
解决办法
1190
查看次数

标签 统计

gpg ×1

gpg-agent ×1

ssh ×1

ssh-agent ×1