Como se constata, o processo gpg-agent
iniciado pelo X não carrega o arquivo de configuração correto e, portanto, não ativa o suporte SSH, o que quebra as coisas. Aqui está o arquivo conforme fornecido pelo pacote gpg-agent
DEB:
/etc/X11/Xsession.d/90gpg-agent :
: ${GNUPGHOME=$HOME/.gnupg}
GPGAGENT=/usr/bin/gpg-agent
PID_FILE="$GNUPGHOME/gpg-agent-info-$(hostname)"
if grep -;s '^[[:space:]]*use-agent' "$GNUPGHOME/gpg.conf" "$GNUPGHOME/options" &&
test -x $GPGAGENT &&
{ test -z "$GPG_AGENT_INFO" || ! $GPGAGENT 2>/dev/null ; }; then
if [ -r "$PID_FILE" ]; then
. "$PID_FILE"
fi
# Invoking gpg-agent with no arguments exits successfully if the agent
# is already running as pointed by $GPG_AGENT_INFO
if ! $GPGAGENT 2>/dev/null; then
STARTUP="$GPGAGENT --daemon --sh --write-env-file=$PID_FILE $STARTUP"
fi
fi
Substitui este script por algo muito mais simples e eficaz:
if [ ! -z "$(pgrep gpg-agent)" ]; then
$GPGAGENT --daemon --enable-ssh-support --sh --write-env-file=$PID_FILE
fi
Isso garantirá que o suporte SSH esteja sempre presente. Não sei por que gpg-agent
não estava olhando para ~/.gnupg/gpg-agent.conf
para ativar o suporte SSH, mas essa solução funciona, por isso estou feliz.