
Eu tenho um Yubikey4 carregado com minha chave gpg, atuando como um smartcard. Eu posso fazer gpg2 card-status
e isso me dá tudo mostrando todas as minhas subchaves e está tudo bem.
Eu então queria usar o gpg-agent para fazer 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 configurei SSH_AUTH_SOCK
no meu .bashrc assim:
export SSH_AUTH_SOCK=~/.gnupg/S.gpg-agent.ssh
Se eu reiniciar minha máquina, a chave será adicionada e visível comssh-add -l
4096 SHA256....... cardno: ..... (RSA)
Mas qualquer tentativa de ssh para um servidor remoto simplesmente trava, ssh -vvv
informa que a máquina tenta assinar e enviar a chave, mas o agente recusa a operação.
Se eu executar um script que criei 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
Tentei implementar isso usando o bashrc, executando-o com meu gerenciador de deskopt e uma tarefa do usuário systemd sem sucesso.
Alguém pode me ajudar a descobrir como iniciar isso automaticamente no login, sem a necessidade de executar "meu script"?
Responder1
Resposta curta :
Execute 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
Saia da sua sessão de desktop e faça login novamente, e verifique se $SSH_AUTH_SOCK está apontando para o seu agente gpg.
Explicação:
Por padrão, o gpg-agent não habilita seu agente SSH. Isso é feito passando --enable-ssh-support
a 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
/etc/X11/Xsession.d/90x11-common_ssh-agent
no pacote x11-common. Se estiver executando o GNOME, o agente GNOME Keyring também estará em execução. Ambos irão interferir com nosso agente GnuPG.
Desativar o agente OpenSSH é feito editando /etc/X11/Xsession.options
como acima.
Desabilitar o agente 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 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 estiver apontando para o seu agente gpg, você pode ter outro agente ainda interferindo no seu agente GnuPG. A variável SSH_AGENT_PID deve conter o PID do processo do agente, o que ajudará a identificar esse agente.
Responder2
Coloque o script em /etc/profile.d
. Certifique-se de que o bit executável esteja definido ( chmod +x
) e que o arquivo tenha uma .sh
extensão.