Tente usar systemctl --user import-environment SSH_AUTH_SOCK
em um script em /etc/X11/xinit/xinitrc.d/
. Confira /etc/X11/xinit/xinitrc.d/50-systemd-user.sh
para referência.
Estou usando o Fedora 24 (amd64), que está executando o GNOME 3 / GNOME Shell como um ambiente de desktop, usando o Wayland como servidor de exibição e o SystemD como o init. Bastante padrão, fora da caixa, é assim que o Fedora 24 é enviado.
Minha distribuição anterior ainda estava usando X, então eu tinha um script chamado 90-gpg-agent em /etc/X11/Xsession.d/autostart que condicionalmente iniciava o gpg-agent ou fornecia suas variáveis exportadas, tornando-as disponíveis para gráficos programas iniciados. Isso fez com que programas como unison-gtk tivessem a variável de ambiente SSH_AUTH_SOCK
correta, para que pudessem usar o gpg-agent como o agente SSH. Qualquer coisa em execução dentro de uma sessão bash usaria apenas as variáveis de ambiente em meu .bashrc, mas os aplicativos gráficos precisavam que isso fosse exportado para acesso.
Existe um equivalente para o Wayland / GNOME / SystemD que irá exportar essas variáveis de ambiente e fornecê-las a aplicativos que iniciem no ambiente de exibição + ambiente de desktop?
Tente usar systemctl --user import-environment SSH_AUTH_SOCK
em um script em /etc/X11/xinit/xinitrc.d/
. Confira /etc/X11/xinit/xinitrc.d/50-systemd-user.sh
para referência.
Basta ativar o suporte ssh no seu agente gpg - adicione a linha enable-ssh-agent
a ~/.gnupg/gpg-agent.conf
- e saia (e volte).
Esta configuração é escolhida por /etc/X11/Xsession.d/90gpg-agent
.
O problema é que isso só funciona para programas X11 - os clientes nativos do Wayland não são afetados. Para corrigir isso, existem duas opções, dependendo do que gpgconf --list-dirs agent-ssh-socket
imprime:
se for um caminho fixo, crie um arquivo .config/environment.d/ssh.conf
e adicione essa saída:
SSH_AUTH_SOCK=/run/user/XXX/gnupg/S.gpg-agent.ssh
ou qualquer outra coisa que gpgconf
imprima.
se for um arquivo temporário que esteja em outro lugar na próxima vez que você fizer login, adicione essas linhas ao seu .bashrc
(ou o equivalente a qualquer shell que estiver usando):
if [ -z "$SSH_AUTH_SOCK" ] ; then
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
fi
dbus-update-activation-environment --systemd SSH_AUTH_SOCK
Isso só funciona para shells e outros programas Wayland iniciados após o primeiro shell, mas isso deve ser suficiente.