Substituindo o agente SSH no Shell, no Wayland e no SystemD do GNOME

5

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?

    
por Naftuli Kay 03.07.2016 / 07:06

2 respostas

4

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.

    
por 03.07.2016 / 14:45
0

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.

por 12.02.2018 / 06:18