Estou usando um yubikey nano no meu sistema local para criptografar / descriptografar / entrar em sistemas remotos, além de encaminhamento de agentes SSH. Lembro-me de ser um urso para configurar, mas tem funcionado perfeitamente há vários meses. De repente, quebrou. Todas as minhas pesquisas retornam os mesmos links que eu li quando o configurei, mas estou preso.
O encaminhamento de agentes SSH funciona inexplicavelmente. Sistema remoto mostra isso:
REMOTE:$ ssh-add -L
ssh-rsa blahblah cardno:123
Eu posso logar em outros servidores usando o SSH do sistema remoto e ele usa o nano para auth (eu sei disso porque requer toque para habilitar a assinatura do agente). Eu posso ver os logs sobre a assinatura SSH no log do agente gpg no sistema local.
No entanto, não consigo fazer com que o sinal / criptografia de GPG funcione. Se eu executar o seguinte no sistema remoto:
REMOTE:$ echo "$(uname -a)" | gpg2 --armor --clearsign --default-key 0x1234
gpg: all values passed to '--default-key' ignored
gpg: no default secret key: No secret key
gpg: [stdin]: clearsign failed: No secret key
No log local do gpg-agent, não vejo registros sobre a tentativa. Se eu executar este comando, posso ver as entradas de log no log local do agente-gpg:
REMOTE:$ $ netcat -U /home/user/.gnupg/S.gpg-agent
OK Pleased to meet you
RESET
OK
GETINFO PID
ERR 67109115 Forbidden <GPG Agent>
POOP
ERR 67109139 Unknown IPC command <GPG Agent>
O que resulta nesses registros no agente local:
2018-01-05 16:38:32 gpg-agent[865] DBG: chan_10 -> OK Pleased to meet you
2018-01-05 16:38:35 gpg-agent[865] DBG: chan_10 <- RESET
2018-01-05 16:38:35 gpg-agent[865] DBG: chan_10 -> OK
2018-01-05 16:38:45 gpg-agent[865] DBG: chan_10 <- GETINFO PID
2018-01-05 16:38:45 gpg-agent[865] DBG: chan_10 -> ERR 67109115 Forbidden <GPG Agent>
2018-01-05 16:39:01 gpg-agent[865] DBG: chan_10 <- POOP
2018-01-05 16:39:01 gpg-agent[865] DBG: chan_10 -> ERR 67109139 Unknown IPC command <GPG Agent>
Se eu executar o strace -f -F no gpg-connect-agent no sistema remoto, parece estar se conectando a um socket em / var / run, mas não aquele enviado do sistema local em ~ / .gnupg /. Eu tentei remover ambos os sockets, matando todos os processos do gpg-agent e mudei o forward remoto do SSH para ir para a localização / var / run ou o local ~ / .gnupg sem sucesso. É possível que eu estraguei esses passos e vou tentar de novo, mas eu quero saber se alguém sabe a resposta, e eu gostaria de ter um post fácil de encontrar para a próxima vez que isso acontecer.
SISTEMA LOCAL:
Mac OS X 10.11.6
gpg installed with brew
gpg (GnuPG) 2.2.1
libgcrypt 1.8.1
SISTEMA REMOTO:
ubuntu 17.10
gpg (GnuPG) 2.1.15
libgcrypt 1.7.8
EDITAR: Ok, não faço ideia do que mudou, mas deixei de lado um pouco e voltei e tentei trocar o soquete novamente e agora funciona:
REMOTE:$ $ echo "$(uname -a)" | strace -f -F gpg2 --armor --clearsign --default-key 0x1234
...
a bunch of garbage
...
stat("/run/user/1000/gnupg/S.gpg-agent", {st_mode=S_IFSOCK|0600, st_size=0, ...}) = 0
socket(AF_UNIX, SOCK_STREAM, 0) = 5
Alterar meu encaminhamento remoto do SSH para esse novo local funcionou. Eu juro que tentei isso anteriormente usando o caminho do soquete fornecido pelo gpgconf --list-dir agent-ssh-socket, sem qualquer sorte. Provavelmente se esqueceu de matar o agente existente. E, por acaso, acabei de encontrar uma reportagem no blog que isso mudou: link