Várias representações para impressão digital de chave

Várias representações para impressão digital de chave

Na sshautenticação de servidores e clientes, as impressões digitais das chaves são apresentadas de diferentes maneiras, mesmo utilizando o mesmo comando ssh-keygen -lf(em hosts diferentes ou em relação a chaves diferentes).

Representação 1:

$ ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:3RE3UrGaTAec8H4YnZG7JTlfXpKvl89iexdqzLCyffY root@hostname1 (ED25519)

Representação 2:

$ ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
d0:21:3e:ec:52:ff:19:a9:e7:71:b5:7f:63:23:57:f7

(exemplo deesta página)

Representação 3:

AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHVo5+sYnRQxerJjG/DmUzQFso+CGzcnGT/SDa457qQqh6WIquvWOIXIY5gNPZoOByAoriK+WRxgTT39hYFmpXE=

de

$ ssh-keygen -H -F hostname2
|1|/DmY6Hm8TdZogykndJOUacp2NaM=|uM+t3vLw3KRySPUeXNqBLCxaGtY= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHVo5+sYnRQxerJjG/DmUzQFso+CGzcnGT/SDa457qQqh6WIquvWOIXIY5gNPZoOByAoriK+WRxgTT39hYFmpXE=

qual é a linha no .ssh/known_hostsarquivo correspondente a hostname2.

Qual a diferença entre eles? E, se forem equivalentes, como obter cada representação das outras?


As representações 1 e 3 foram obtidas usando OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017o Ubuntu 18.04.

Responder1

Versões mais antigas dossh-keygenutilitário do OpenSSH exibiu apenas hashes MD5; a utilidadeagora o padrão é exibir um hash SHA256, embora você ainda possa selecionar um hash MD5 usando a -Eopção:

user@host:~/.ssh$ ssh-keygen -E md5 -l -f samplekey
2048 MD5:e6:1f:73:0f:14:cb:9a:71:2f:3b:31:b7:3f:58:1c:52 user@host (RSA)
user@host:~/.ssh$ ssh-keygen -E sha256 -l -f samplekey
2048 SHA256:Oyt9H15ZBmITbhljpSiE/BLreo/+j+6lsC3gClGI97U user@host (RSA)
user@host:~/.ssh$ ssh-keygen -B -l -f samplekey
2048 xomiz-lozad-ruzin-lasuz-vibic-fydar-hecoh-mapuv-vytus-futah-maxox user@host (RSA)

Além disso, você pode adicionar o -vsinalizador (visual) no hash MD5 ou SHA256 para obter uma imagem de comparação de arte ascii, além de um hash alfanumérico:

user@host:~/.ssh$ ssh-keygen -E sha256 -l -v -f samplekey
2048 SHA256:Oyt9H15ZBmITbhljpSiE/BLreo/+j+6lsC3gClGI97U user@host (RSA)
+---[RSA 2048]----+
|     . ..   =..  |
|..    +.   + *   |
|o o   .+. . O .  |
| o . .o... o o . |
|.   ..E.S       o|
| .  . .  .     + |
|.  . o..o . . o  |
| .  o +=.*.. o   |
|  .. o+BXo..o    |
+----[SHA256]-----+
user@host:~/.ssh$

Sua terceira representação não é uma impressão digital, mas a chave pública, codificada em base 64, pois será armazenada em um samplekey.pubarquivo ou no known_hostsarquivo de um sistema que aceite essa chave.

Não há como determinar a chave a partir do hash; para obter o hash da chave, use o ssh-keygenutilitário com suas opções padrão ou usando as opções -E, -Be/ou -vpara obter o estilo de saída de sua preferência.

Para obter a impressão digital de uma chave em um known_hostsarquivo (em vez do arquivo de chave pública original, como nos exemplos acima), você pode canalizar uma string contendo o tipo de chave e a chave diretamente para ssh-keygen:

$ echo "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHVo5+sYnRQxerJjG/DmUzQFso+CGzcnGT/SDa457qQqh6WIquvWOIXIY5gNPZoOByAoriK+WRxgTT39hYFmpXE=" | ssh-keygen -l -f -
256 SHA256:wOxOBgRQp1qQcnTIjgmE/GB8+3fm8ahyDXuL/2GzgIo no comment (ECDSA)

informação relacionada