Como faço para a Putty solicitar o blob SHA256 remoto como a impressão digital da chave?

1

Quando eu ssh do meu Mac para um novo servidor Ubuntu remoto, ele me pede para confirmar a impressão digital da chave como um blob de base64 SHA256.

Mas quando eu tento me conectar com o Putty no Windows ou no Ubuntu para um novo servidor Ubuntu remoto, ele me pede para confirmar a impressão digital da chave como MD5. Eu prefiro confirmar usando um blob de base64 SHA256.

A documentação do Putty para o painel de configuração do Key Exchange indica que está ciente dos blobs de base64, mas a referência é para uma configuração que pressupõe que eu conheça a impressão digital antecipadamente (configuração manual).

Posso / como posso dizer ao Putty para exibir a nova impressão digital de chave blob base64 em vez da nova impressão de chave MD5 remota quando conectando a um servidor remoto e a impressão digital remota não corresponde ao valor anterior armazenado localmente?

    
por Charles Belov 28.06.2016 / 22:39

1 resposta

2

Tenha cuidado para distinguir entre blobs e hashes. A chave pública blob usada pelo OpenSSH, e também pelo PuTTY, é a mesma para uma determinada chave, independentemente do (s) hash (s) usado (s). O blob chave é armazenado em base64 pelo OpenSSH em seus arquivos xxx_key.pub known_hosts authorized_keys , conforme aplicável, em parte porque facilita copiar esses arquivos e valores com técnicas como recortar e colar e (especialmente mais antigas) e-mail que talvez não manipule dados "binários", conhecidos como "8 bits". A "impressão digital" exibida pelo OpenSSH (por padrão, a menos que você peça VisualHostKey ) costumava ser MD5 (blob) exibido em hexadecimal, e agora é SHA256 (blob) exibido em base64. O PuTTY seguiu o exemplo original do OpenSSH, mas (a partir de 0.67) não é a atualização.

Você pode solicitar um acessório seguindo as instruções do manual e duplicados em link . Ou é open source; você mesmo pode fazer a alteração e enviá-la de volta para ela (veja B.5 logo após B.4). O código de 'impressão digital' está atualmente em um lugar em sshdsa.c e dois em sshrsa.c , mas eu ver no site a próxima versão vai incluir ecdsa e ed25519 chaves, o que significa que, presumivelmente, pelo menos um e talvez vários novos lugar (es ) para criar uma impressão digital. Para ser consistente, permita a base64 de um hash (não apenas de um blob como agora) em validate_manual_key in misc.c . Isso é fácil se você mudar para SHA256-b64 incondicionalmente e nunca fazer MD5-hex; para uma apresentação ou recurso utilizável por outras pessoas, isso provavelmente tem que ser configurável e / ou interativo, o que parece ser um pouco mais difícil.

Para o Windows, consigo ver uma muito solução alternativa desajeitada. Use plink para se conectar ao host e aceitar a nova chave, colocando-a no registro. (Se houver uma chave antiga, salve-a primeiro.) Obtenha a nova chave do registro (em partes), construa o blob, o hash e a base64 e exiba-a para confirmação. Se não confirmado, apague a chave do registro (e restaure qualquer anterior).

Para Unix, uma forma um pouco menos desajeitado é usar ssh com StrictHostKeyChecking=no a aceitar a nova chave e colocar o blob base64 em known_hosts , ou usar ssh-keyscan para obter o blob base64 diretamente. Então base64-decode, hash, base64-codifica (o hash) e exibe; se for ruim depois que ssh for forçado, exclua a entrada incorreta de known_hosts ; se bom depois de ssh-keyscan , adicione a boa entrada. O OpenSSL pode fazer convenientemente os dois bits do cálculo:

awk <.ssh/known_hosts '$1~/thehostname/{print $3}' |openssl base64 -d |openssl sha256 |openssl base64

mas se você não tem o OpenSSL, deve ser fácil combinar outras ferramentas base64 e sha256.

    
por 01.07.2016 / 22:39

Tags