Respostas:
A impressão digital é baseada na chave pública do host, geralmente baseada em "/etc/ssh/ssh_host_rsa_key.pub" Geralmente é para facilitar a identificação / verificação do host ao qual você está se conectando.
Se a impressão digital mudar, a máquina à qual você está se conectando alterou sua chave pública. Isso pode não ser uma coisa ruim (acontece na reinstalação do ssh), mas também pode indicar que você está se conectando a uma máquina diferente no mesmo domínio / IP (acontece quando você está se conectando através de algo como o balanceador de carga) ou que você estão sendo direcionados com um ataque man-in-the-middle, em que o invasor de alguma forma intercepta / redireciona sua conexão ssh para conectar-se a um host diferente que pode estar espionando seu usuário / pw.
Conclusão: se você for avisado sobre uma impressão digital alterada, tenha cuidado e verifique se está realmente se conectando ao host correto por uma conexão segura. Embora na maioria das vezes isso seja inofensivo, pode ser uma indicação de um possível problema
Veja: http://www.lysium.de/blog/index.php?/archives/186-How-to-get-ssh-server-fingerprint-information.html
e: http://en.wikipedia.org/ wiki / Public_key_fingerprint
~/.ssh/known_hosts
. Dessa forma, quando você se conectar ao servidor, seu cliente SSH reconhecerá esse servidor, desde que você salvou sua chave pública known_hosts
. Portanto, você nunca deve dizer "sim" quando o cliente SSH informar "A autenticidade do host não pode ser estabelecida". Você sempre deve adicionar a chave pública do servidor com antecedência.
~/.ssh/known_hosts
arquivo com antecedência e nunca dizer sim quando o cliente SSH informar "A autenticidade do cliente não pode ser estabelecida" ou quando a mensagem "A chave pública do servidor tiver sido alterado ".
Você pode gerar uma impressão digital para uma chave pública usando ssh-keygen
o seguinte:
ssh-keygen -lf /path/to/key.pub
Exemplo concreto (se você usar uma chave pública RSA):
$ ssh-keygen -lf ~/.ssh/id_rsa.pub
2048 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff /Users/username/.ssh/id_rsa.pub (RSA)
A primeira parte (2048)
é o comprimento da chave em bits, a segunda parte (00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff)
é a impressão digital da chave pública e a terceira parte é o local do próprio arquivo de chave pública.
ssh-keygen -lf
que fará o que você deseja.
ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
. Ele mostra a impressão digital que também é mostrada nos logins do SSH no host local.
ssh-keygen
relatadas sha256
. Para obter md5
impressões digitais, corri ssh-keygen -l -E md5 -f ~/.ssh/id_rsa.pub
. #archlinux
ssh -o FingerprintHash=md5
ou o equivalente em ssh_config
coisas que usam ssh
como scp
.
A impressão digital é o MD5 sobre os dados binários da chave pública codificada em Base64.
$ ssh-keygen -f foo
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in foo.
Your public key has been saved in foo.pub.
The key fingerprint is:
65:30:38:96:35:56:4f:64:64:e8:e3:a4:7d:59:3e:19 andrew@localhost
The key's randomart image is:
+--[ RSA 2048]----+
| +*..+* |
| =. +.= |
| . . .o . |
| o+ E |
| S= . + o |
| . o o + |
| . . |
| |
| |
+-----------------+
$ cat foo.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEbKq5U57fhzQ3SBbs3NVmgY2ouYZfPhc6cXBNEFpRT3T100fnbkYw+EHi76nwsp+uGxk08kh4GG881DrgotptrJj2dJxXpWp/SFdVu5S9fFU6l6dCTC9IBYYCCV8PvXbBZ3oDZyyyJT7/vXSaUdbk3x9MeNlYrgItm2KY6MdHYEg8R994Sspn1sE4Ydey5DfG/WNWVrzFCI0sWI3yj4zuCcUXFz9sEG8fIYikD9rNuohiMenWjkj6oLTwZGVW2q4wRL0051XBkmfnPD/H6gqOML9MbZQ8D6/+az0yF9oD61SkifhBNBRRNaIab/Np7XD61siR8zNMG/vCKjFGICnp andrew@localhost
$ echo 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDEbKq5U57fhzQ3SBbs3NVmgY2ouYZfPhc6cXBNEFpRT3T100fnbkYw+EHi76nwsp+uGxk08kh4GG881DrgotptrJj2dJxXpWp/SFdVu5S9fFU6l6dCTC9IBYYCCV8PvXbBZ3oDZyyyJT7/vXSaUdbk3x9MeNlYrgItm2KY6MdHYEg8R994Sspn1sE4Ydey5DfG/WNWVrzFCI0sWI3yj4zuCcUXFz9sEG8fIYikD9rNuohiMenWjkj6oLTwZGVW2q4wRL0051XBkmfnPD/H6gqOML9MbZQ8D6/+az0yF9oD61SkifhBNBRRNaIab/Np7XD61siR8zNMG/vCKjFGICnp' \
| base64 -D | md5
6530389635564f6464e8e3a47d593e19
O md5sum 6530389635564f6464e8e3a47d593e19 é a impressão digital exibida quando a chave é gerada, apenas sem os dois pontos de separação.
No entanto, se você estiver lidando com as impressões digitais mostradas pela Amazon no console do EC2 Key Pairs, infelizmente isso pode ser uma fera diferente . Se for uma sequência hexadecimal de 32 dígitos, é a impressão digital padrão da chave pública SS5 MD5 acima. Mas se tiver 40 dígitos hexadecimais, na verdade é uma impressão digital calculada usando o SHA1 da chave privada no formato PKCS # 8:
$ openssl pkcs8 -in foo -nocrypt -topk8 -outform DER | openssl sha1 -c
e2:77:39:d3:53:a7:62:68:5f:da:82:0e:99:61:30:64:a2:88:c4:58
awk '{print $2}' /path/to/keyfile.pub
ou similar.
cat id_rsa.pub | cut -d' ' -f2 | base64 -d | md5sum
Se você deseja verificar um arquivo de chave SSH para ver se é o mesmo que é relatado como "Chave de implantação" pelo github, este é para você ...
Na URL privada: https://github.com/<username>/<repo_name>/settings/keys, você verá
No terminal:
$ ls -l id*
-rw------- 1 bruno staff 1675 Mar 29 17:03 id_rsa
-rw-r--r-- 1 bruno staff 416 Mar 29 17:03 id_rsa.pub
$ ssh-keygen -E md5 -lf id_rsa
2048 MD5:07:b4:00:a4:65:ef:44:89:05:84:60:0c:c9:b2:36:5e ec2-user@ip-10-2-1-16.ec2.internal (RSA)
$ ssh-keygen -E md5 -lf id_rsa.pub
2048 MD5:07:b4:00:a4:65:ef:44:89:05:84:60:0c:c9:b2:36:5e ec2-user@ip-10-2-1-16.ec2.internal (RSA)
Você notará que obtém a mesma impressão digital para as chaves pública e privada.
Esse mesmo comando pode ser combinado com um recurso interessante do GitHub, que é o fato de que eles veiculam publicamente as chaves públicas SSH dos usuários em https://github.com/<username>.keys
Aqui está uma lista que você pode usar para tirar vantagem disso.
$ curl -sL https://github.com/RichardBronosky.keys | while read; do echo -e "\nkey #$((++i)):"; ssh-keygen -E md5 -lf - <<<"$REPLY"; echo $REPLY; done
key #1:
2048 MD5:07:b4:00:a4:65:ef:44:89:05:84:60:0c:c9:b2:36:5e no comment (RSA)
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJGT35gvsFveu+80qgurrLHId0h55E9jliM7Fo0mV9b7eg3EfyagkAcJUSMFkoov3HY4CW0yzOc7WlN57ABwvpRz1ioFDex0n0FkjoSEs5ROeT1OneRK6Bf6XnplgPuQ/LSSkv3kmK6I29R+YWi6TjDvLLoA5BrXJjOMfUv36jxWCDtk/5ZdhMZqhsMuDm06Jg5JBu6n5jQaZkmaIaunz7vOfwVG9LoCI+MYyIdo2S4VTva7Ee7jfAvgSUUgHTjhzsPO0/Ww5a/Kz2ehXW27aJxj/QPLfYR2LmTMbQKm3WpB8P1LjoiU7zjPoVoZ43a4P2JLUDidGKCd3eY5b5xewz
key #2:
2048 MD5:f7:98:f1:0b:73:c6:2a:21:00:7a:70:1d:0f:cf:d8:cc no comment (RSA)
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCQsZrjwKjB4WnE4SwVdDX5eEMxKzPHFBVKKpo9vvWUXRQwdTZy6iVOkyF26IPR+xDPzslzXOClKXUrWEh6La/EMpRwuMrWAbMIJFeDHOb56q4azgopoJmMJHo0yxGu0Ts4XszMACYRhlG6uK2AP5SYiOTp1zKPFjazXAdwLXyOvJurzy6KKuGJdSs/sj9+4uehgyRNOhehCSfg71tJJYwRvO2DDfLgaVEKOgZx58gEnJfhhz9D7rbvdZNhw/hCgtVNJaQF9Mdke2OPwWSo8i0/XNb9Bu/GRXqwMZrxDBhyzieocW40cwuzxWfzoi03aISdtQ1HtawH8+/sswviM1+B
ssh-keygen -r host.name.com
Produzirá as impressões digitais de todas as chaves públicas configuradas em uma instância sshd.
Eles podem ser colocados nos registros DNS SSHFP .