Parece que openssh ha cambiado la forma en que muestra las huellas digitales clave.
Estoy tratando de ssh desde una máquina cliente a un servidor:
- cliente: ubuntu 14.04 ejecutando OpenSSH 6.6.1
- servidor: FreeBSD con OpenSSH 7.2p2.
El cliente informa el hash md5 de la clave del servidor como una secuencia de 16 pares de dígitos hexadecimales, como este:
a7:b1:3e:3d:84:24:a2:5a:91:5f:6f:e9:cf:dd:2b:6a
El servidor usa de manera predeterminada el hash sha256, pero gracias a esta respuesta puedo forzarlo a que proporcione el hash sha1 ejecutando:
[root@host /etc/ssh]# ssh-keygen -l -E sha1 -f ssh_host_ecdsa_key.pub
Quiero que el resultado se vea así:
a7:b1:3e:3d:84:24:a2:5a:91:5f:6f:e9:cf:dd:2b:6a
pero en cambio obtengo esto:
256 SHA1:KIh0ejR4O+RqrSq7JdGAASddRfI [email protected] (ECDSA)
Me parece que ahora se muestra una versión codificada en base64 de la huella digital en lugar de dígitos hexadecimales.
¿Cómo puedo obtener la suma de verificación de la clave del servidor en el mismo formato que el informado por el cliente (más antiguo) (dígitos hexadecimales separados por dos puntos, sha1 hash) para verificar que sean iguales?
EDITAR: La versión anterior de SSH proporciona la suma de comprobación md5 , no la suma de comprobación sha1 como pensé erróneamente. El uso de esa suma de verificación (como debería decir la respuesta ahora aceptada) en la opción -E da el resultado deseado.
sha1
lugar demd5
! He desactualizado la versión de Ubuntu con openssh-6.9, pero funciona bien.Como resultado, el SSH Cookbook tiene una forma de generar claves manualmente en el formato hexadecimal más antiguo. Utilicé esto en el servidor freebsd.
Desglosando esto:
imprima la segunda columna (separada por espacios) en "key.pub", que es la clave en sí
la clave está codificada en base64. Esto generará los bytes reales de la clave
este es el equivalente de freebsd del 'md5sum -b' que se especificó en la receta en la página del libro de cocina ssh
Hay dos comandos sed aquí:
reemplace cada par de caracteres en la línea (gracias a la bandera 'g' al final) con ese mismo par seguido de dos puntos
elimine los dos puntos finales (reemplace los dos puntos seguidos de un espacio seguido de cualquier cosa hasta el final de la línea sin nada).
fuente
En casos como este, uso el siguiente pequeño script (probado en Debian y Ubuntu):
Ejemplo de uso:
fuente