Respuestas:
La huella digital se basa en la clave pública del host, generalmente basada en "/etc/ssh/ssh_host_rsa_key.pub". Generalmente es para una fácil identificación / verificación del host al que se está conectando.
Si la huella digital cambia, la máquina a la que se está conectando ha cambiado su clave pública. Esto puede no ser algo malo (sucede al reinstalar ssh), pero también podría indicar que se está conectando a una máquina diferente en el mismo dominio / IP (sucede cuando se está conectando a través de algo como el equilibrador de carga) o que están siendo atacados con un ataque man-in-the-middle, donde el atacante de alguna manera está interceptando / redirigiendo su conexión ssh para conectarse a un host diferente que podría estar husmeando a su usuario / pw.
En pocas palabras: si se le advierte de una huella digital cambiada, tenga cuidado y verifique que realmente se esté conectando al host correcto a través de una conexión segura. Aunque la mayoría de las veces esto es inofensivo, puede ser una indicación de un problema potencial
Ver: http://www.lysium.de/blog/index.php?/archives/186-How-to-get-ssh-server-fingerprint-information.html
y: http://en.wikipedia.org/ wiki / Public_key_fingerprint
~/.ssh/known_hosts
. De esta manera, cuando se conecta al servidor, su cliente SSH reconocerá este servidor, ya que ha guardado su clave pública en known_hosts
. Por lo tanto, en realidad nunca debe decir "sí" cuando el cliente SSH le dice "No se puede establecer la autenticidad del host". Siempre debe agregar la clave pública del servidor de antemano.
~/.ssh/known_hosts
archivo de antemano y nunca decir sí cuando su cliente SSH le dice "No se puede establecer la autenticidad del cliente" o cuando le dice "La clave pública del servidor ha sido cambiado ".
Puede generar una huella digital para una clave pública usando ssh-keygen
así:
ssh-keygen -lf /path/to/key.pub
Ejemplo concreto (si usa una clave 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)
La primera parte (2048)
es la longitud de la clave en bits, la segunda parte (00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff)
es la huella digital de la clave pública y la tercera parte es la ubicación del archivo de clave pública en sí.
ssh-keygen -lf
que hará lo que quieras.
ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
. Muestra la huella digital que también se muestra en los inicios de sesión SSH en localhost.
ssh-keygen
reportadas sha256
. Para obtener md5
huellas digitales corrí ssh-keygen -l -E md5 -f ~/.ssh/id_rsa.pub
. #archlinux
ssh -o FingerprintHash=md5
o su equivalente en ssh_config
y sobre cosas que usan ssh
como scp
.
La huella digital es el MD5 sobre los datos binarios dentro de la clave pública codificada en 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
El md5sum 6530389635564f6464e8e3a47d593e19 es la huella digital que se muestra cuando se genera la clave, solo sin los dos puntos de separación.
Sin embargo, si está lidiando con las huellas digitales que Amazon muestra en la consola EC2 Key Pairs, desafortunadamente esa puede ser una bestia diferente . Si se trata de una cadena hexadecimal de 32 dígitos, es la huella dactilar de clave pública MD5 SSH estándar anterior. Pero si son 40 dígitos hexadecimales, en realidad es una huella digital calculada tomando el SHA1 de la clave privada en 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
o similar.
cat id_rsa.pub | cut -d' ' -f2 | base64 -d | md5sum
Si desea verificar un archivo de clave SSH para ver si es lo mismo que lo que informa github como "Implementar clave", esto es para usted ...
Desde la URL privada: https://github.com/<username>/<repo_name>/settings/keys verá
En la 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)
Notará que obtiene la misma huella digital para las claves privadas y públicas.
Ese mismo comando se puede combinar con una característica ordenada de GitHub, que es el hecho de que sirven públicamente las claves públicas SSH de los usuarios en https://github.com/<username>.keys
Aquí hay una línea que puede usar para aprovecharla.
$ 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
Producirá las huellas digitales para todas las claves públicas configuradas en una instancia de sshd.