Impressão digital da chave ECDSA - parece que é codificada em base64, mas poucos caracteres

4

Eu configurei uma GitLab VM e criei um projeto nela. Agora estou tentando me conectar a ele de outra máquina usando meu cliente git ( Git para Windows v2.7.1 ... também tentei atualizar para o mais recente versão que é 2.15.1, mas nenhuma mudança).

Na máquina do Windows, eu tento:

git push -u origin --all
The authenticity of host 'localgit.local (10.1.2.3)' can't be established.
ECDSA key fingerprint is SHA256:twmcV7LjBtI9vUsDeFEHeH0lUcBAihWtGye0K9vHCrk.
Are you sure you want to continue connecting (yes/no)? no

Eu escolhi "não" porque quando fui verificar novamente na VM, encontrei uma impressão digital diferente:

ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub
256 7e:e4:4e:7f:47:b0:41:75:2c:45:bd:be:f5:44:77:d7 /etc/ssh/ssh_host_ecdsa_key.pub (ECDSA)

Ok, está no formato hexadecimal, então vou converter isso para base64, certo?

hex: 7ee44e7f47b041752c45bdbef54477d7
base64: fuROf0ewQXUsRb2+9UR31w==

Bem, isso não combina ... e se eu fizer o contrário e converter essa impressão digital base64 em hexadecimal e ver como é? Acontece que eu não posso, é 43 caracteres, e uma seqüência de base64 deve ter um comprimento que é um múltiplo de 4.

Alguma idéia do que estou sentindo falta aqui?

    
por Anssssss 20.12.2017 / 00:45

1 resposta

1

O formato octetos separados por dois pontos é uma impressão digital MD5, não uma impressão digital SHA256. Você não pode converter diretamente um para o outro (bem, você meio que poderia, talvez, se você inverter a impressão digital do MD5, mas isso ainda consome um pouco da energia da CPU).

Que ssh-keygen está exibindo uma impressão digital MD5 sugere que essa máquina pode estar executando uma versão bastante antiga do OpenSSH, porque o formato de saída padrão atualmente é o SHA256. Você pode tentar passar -E sha256 para ssh-keygen para obter um hash SHA256, caso exista uma versão que suporte SHA256, mas padrão MD5, e você está rodando, mas eu não gostaria de dizer isso vai funcionar com certeza.

Se você não puder obter sua versão de ssh-keygen para a saída SHA256, a outra opção será "downgrade" do cliente SSH para gerar uma impressão digital MD5 na conexão. Para isso, você precisa definir -o FingerprintHash=md5 na linha de comando (ou FingerprintHash md5 na configuração SSH). Exatamente a melhor maneira de fazer isso, dado que você está executando o SSH via git, é deixado como um exercício para o leitor astuto. < grin >

Barra lateral: a razão pela qual o hash base64 SHA256 não é o número "correto" de caracteres é porque um hash SHA256 não é o número "correto" de caracteres para caber em uma string base64 sem alguns sinais = à direita . Como os últimos caracteres "sempre" serão = sinais, eles são descartados, o que economiza alguns caracteres inúteis.

    
por 20.12.2017 / 00:54