Preâmbulo
Meu entendimento de gpg e ssh é meio técnico como programador e fã de criptografia, mas não sou um grande profissional em detalhes minuciosos como configuração, "trivia" como especificações de sopa de letrinhas, variáveis mágicas e interoperação. Passei por algumas horas lendo guias e soluções de problemas, e alguns anos de uso leve do servidor Linux, e passei por muito até agora, mas estou preso agora.
Meta
Para configurar o gpg4win com uma chave mestra com 1 subchave de autenticação, isso me permite autenticar no git e ssh gpg-agent
com um prompt de senha via gpg4win.
Sitrep
Windows 10 pc, servidor linux na LAN para teste. ssh, putty, kitty e pageant já configurados e funcionando com uma chave gpg mais antiga + chave putty derivada minha. Kleopatra mostra que tudo está funcionando, prompt de senha e gpg-agent incluídos. gpg4win 3.1.7, gnupg 2.2.15, putty/kitty 0.71.
Gerei uma nova chave mestra 9B59
para mim usando ECC (ed25519), somente certificado. Gerou 2 subchaves ECC (1 Criptografar, 1 Autenticar+Assinar).
Subchave AS:
- id =
F3DC
- aperto de tecla =
3289...224A
gpg --export-ssh-key ...
=ssh-ed25519 AAAAC3Nz... openpgp:0x6146F3DC
.
Keygrip de subchave AS adicionado a ~\gnupg\sshcontrol
, chave ssh adicionada a do servidor ~/authorized_keys
.
gpg-agent
correndo com --enable-putty-support --enable-ssh-support
. A tentativa de execução pageant
falha com um erro de que "o concurso já está em execução", indicando que o suporte ssh está online (e não, não há nenhuma instância do concurso em execução).
SSH_AUTH_SOCK
env var = C:\Users\me\AppData\Roaming\gnupg\S.gpg-agent.ssh
. Este arquivo existe, é sempre "modificado pela última vez em" no momento da inicialização do gpg-agent e contém alguns foobar binários.
gpg-connect-agent -r keyinfo_list.txt
relatado (entre outras chaves):
S KEYINFO 3289...224A D - - - P - - -
Tentar autenticar no meu servidor ssh neste ponto falhou contra minha expectativa com "nenhum método de autenticação suportado (chave pública)" e não solicitou minha senha via gpg4win.
Depois de executar uma operação no Kleopatra para forçar o carregamento da chave, a saída anterior foi alterada para
S KEYINFO 3289...224A D - - 1 P - - -
que minha subchave AS F3DC
seja carregada e armazenada em cache corretamente.
Neste ponto, a autenticação através do putty/kitty usando "pageant" (= gpg-agent) ainda não funcionou.
O log de eventos putty do login com falha mostra:
Event Log: Pageant is running. Requesting keys.
Event Log: Pageant has 0 SSH-2 keys
Q
Por que o gpg-agent não oferece o uso da minha subchave AS, apesar de ter sido carregado no gpg-agent, definido em sshcontrol
e listado em my authorized_keys
?
Ok, então descobri que 2 coisas estavam erradas:
sshcontrol
é muito duvidoso, mas silencioso sobre os finais de linha (a última linha deve terminar com um terminador de linha)--homedir <your gnupg folder>