¿Cómo puedo verificar la huella digital del nuevo host conectado cuando intento conectarme desde mi máquina remota a la máquina doméstica? En la primera conexión obtuve esto:
[email protected]$ ssh [email protected]:~/
The authenticity of host '[home-machine.org]:222 ([x.xx.xx.xx]:222)' can't be established.
ECDSA key fingerprint is SHA256:6lr/VtTwgrKZVNZQ8y8Le/ilfBYfo0e+9UliSg+AD2k.
Are you sure you want to continue connecting (yes/no)?
¿Cómo puedo verificar la huella digital de mi "máquina doméstica"? Estaba tratando de enumerarlos en la máquina de mi casa de esta manera:
[email protected]:~$ for pubkey_file in /etc/ssh/*.pub; do ssh-keygen -lf ${pubkey_file}; done
1024 d1:ef:db:b4:24:fc:ca:fe:e1:11:8c:36:0a:77:90:49 /etc/ssh/ssh_host_dsa_key.pub (DSA)
256 d9:25:51:16:ca:76:bd:8f:b8:6a:79:a2:1c:81:4b:4c /etc/ssh/ssh_host_ecdsa_key.pub (ECDSA)
2048 3a:c6:2d:29:7c:b9:16:e8:ed:1c:a8:26:5d:ab:0d:1e /etc/ssh/ssh_host_rsa_key.pub (RSA)
[email protected]:~$
Pero esas teclas parecen estar en un formato diferente. ¿Es esta una especie de MD5 de huella digital? ¿Cómo puedo tener esas huellas digitales en formato unificado?
-E
cambio no ayudará muy probablemente.d1:ef:db:b4:24:fc:ca:fe:e1:11:8c:36:0a:77:90:49
es un hash MD5. @Emiter debería actualizar el paquete openssh-client ; y muy probablemente openssh-serverComandos utilizados
Muestre el arte ascii de la clave de host pública almacenada en el servidor (que debe hacerse en el lado del servidor, al que se conecta a través de ssh):
-l : muestra la huella digital del archivo de clave pública especificado.
-v : visual (arte ascii)
-E md5 : el algoritmo hash utilizado para calcular la huella digital ("md5" o "sha256"). (Se prefiere "sha256" si está disponible). (puede no estar disponible en versiones anteriores de ssh-keygen)
-f : archivo
Muestre el arte ascii de la clave de host pública del servidor remoto (para hacerla en el lado del cliente, desde la que se conecta a través de ssh):
-o : opción
visualhostkey : visual (ascii-art)
FingerprintHash : hash algo para usar (use el mismo que el que obtiene del servidor: md5 o sha256)
Qué hacer para verificar la autenticidad de un host / servidor
Primero, 1. debe hacerse localmente en el servidor (al que desea conectarse a través de ssh): le dará un primer ascii-art. Imprímelo o toma una foto.
Segundo, 2. debe hacerse en la primera conexión SSH; mostrará un segundo arte ascii. Si el arte ascii es el mismo, entonces puedes responder sí a "¿Confío?" pregunta (es decir
Are you sure you want to continue connecting (yes/no)
).Ejemplo
Alguna explicación más
El primer comando mostrará el arte ascii correspondiente a la huella digital del archivo que ingresa (y la propia huella digital). El archivo que ingresa como entrada es la clave de host pública del servidor. Cuando un cliente se conecta (no solo por primera vez), el servidor enviará su clave de host pública. Esta clave de host pública se buscará en
~/.ssh/known_hosts
. Si la clave pública está en el archivo, entonces está bien: se conoce el host (servidor), por lo que pasamos al siguiente paso para autenticar al usuario (la autenticación del usuario no se describe en esta publicación). Si la clave pública no está en el archivo, el cliente calculará la huella digital de esta clave de host pública con un algoritmo hash (un algoritmo hash diferente dará una huella digital diferente). Se muestra esta huella digital previamente calculada (junto con el ascii-art si se proporciona la opción correspondiente) y deberá responder sí o no dependiendo de si reconoce esta huella digital o no (esta huella digital es la imagen / hash de la clave de host pública de la clave servidor). Si dice que sí, se agregará al archivo la clave bublic del servidor (no su huella digital)~/.ssh/known_hosts
.Podemos notar que
~/.ssh/known_hosts
es en el directorio a casa (~), debido a que confía en este host (servidor), pero un usuario diferente puede no confiar en lo mismo que usted. Además, la clave pública del host del servidor no depende del usuario, por lo que se almacena en/etc/ssh/
.El segundo comando mostrará la huella digital y el arte ascii de la clave pública recibida del host_server_to_connect (de acuerdo con el algoritmo hash dado en las opciones). Es lo mismo que hacer solo ssh, pero con más opciones visuales, por lo que la conexión continuará de la misma manera que una conexión ssh normal.
fuente