Como iniciar corretamente o gpg-agent no Ubuntu 16.04

1

Eu tenho um Yubikey4 carregado com a minha chave gpg, atuando como um cartão inteligente. Eu posso fazer gpg2 card-status e isso me dá toda a shebang mostrando todas as minhas subchaves e está tudo bem.

Eu então queria usar gpg-agent para ssh em hosts remotos usando minha chave gpg. Eu adicionei o seguinte ao meu ~/.gnupg/gpg-agent.conf

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

Eu também defino o SSH_AUTH_SOCK no meu .bashrc como este:

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

Se eu reinicializar minha máquina, a chave será adicionada e visível com ssh-add -l

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

Mas qualquer tentativa de ssh para um servidor remoto é interrompida, ssh -vvv me diz que a máquina tenta assinar e enviar a chave, mas o agente recusa a operação.

Se eu, então, executar um script que fiz usando várias fontes, tudo funcionará.

   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 

Eu tentei implementar isso usando o bashrc, executando-o com o meu deskopt-manager e com uma tarefa do sistema do usuário sem sucesso.

Alguém pode me ajudar a descobrir como iniciar isso automaticamente no login, sem a necessidade de executar "meu script"?

    
por chriskvik 11.03.2018 / 01:30

2 respostas

1

Resposta curta:

Executar como root:

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

Faça o logoff da sessão da sua área de trabalho e faça login novamente e verifique se o $ SSH_AUTH_SOCK está apontando para o seu gpg-agent.

Explicação:

Por padrão, o gpg-agent não ativa seu agente SSH. Isso é feito passando --enable-ssh-support na linha de comando ou adicionando uma linha a um arquivo de configuração como acima.

Em segundo lugar, o problema de outros agentes SSH. O agente OpenSSH é iniciado por padrão, configurado por /etc/X11/Xsession.d/90x11-common_ssh-agent do pacote x11-common. Se estiver executando o GNOME, o agente do GNOME Keyring também está sendo executado. Ambos irão interferir com o nosso agente GnuPG.

Desativar o agente OpenSSH é editando /etc/X11/Xsession.options como acima.

Desativar o agente do GNOME Keyring é potencialmente um pouco mais complicado. Usando o Xfce, pode-se desinstalar o pacote libpam-gnome-keyring e garantir que o Xfce não inicie os serviços do GNOME ( Configurações → Sessão e Inicialização → Avançado → Iniciar serviços GNOME na inicialização - desmarque se estiver marcado).

Solução de problemas

Se depois de tudo isso, o SSH_AUTH_SOCK ainda não está apontando para o seu gpg-agent, você pode ter outro agente ainda interferindo no seu agente do GnuPG. A variável SSH_AGENT_PID deve conter o PID do processo do agente, o que ajudará a identificar esse agente.

Fonte: Minha configuração perfeita do agente GnuPG / SSH

    
por 18.03.2018 / 10:02
0

Coloque o script em /etc/profile.d . Certifique-se de que você executou o bit set ( chmod +x ) e o arquivo tem uma extensão .sh .

    
por 17.03.2018 / 01:07