¿Dónde se genera / almacena la huella digital del servidor SSH?
44
Instalé openssh-server y creé una clave con ssh-keygen. Luego intenté probarlo utilizando el reenvío de puerto local haciendo ssh -L 8080:www.nytimes.com:80 127.0.0.1. Sin embargo, la huella digital clave que proporciona este comando no es la huella digital clave que obtengo cuando lo hago ssh-keygen -l. Incluso si elimino mi directorio .ssh, sigo teniendo la misma huella digital, que no es la que he creado ssh-keygen. ¿Hay otra clave en mi sistema? ¿Dónde está esta llave? ¿Cómo puedo seleccionar esta clave para que la abra el servidor openssh?
Cuando realiza una sesión SSH, participan dos pares de claves diferentes (con una huella digital para cada par). Una es la clave del usuario que se almacena en ~/.ssh. La identidad de clave SSH del usuario a veces se usa como credenciales para iniciar sesión en otra computadora (si ha configurado un inicio de sesión basado en clave).
La otra es la clave del servidor SSH. Esta es la clave para la que ve la huella digital cuando se conecta a un servidor diferente por primera vez. La identidad de esta clave se utiliza para asegurarse de que está iniciando sesión en el servidor SSH que desea. Esto es importante si está utilizando contraseñas porque no querría intentar iniciar sesión accidentalmente en una máquina de atacantes: el atacante obtendría su contraseña cuando la ingresara. Luego, el atacante podría iniciar sesión en la máquina en la que pensó que estaba iniciando sesión ¡a! (Esto se conoce como un "ataque de hombre en el medio" ). Las claves que utiliza un servidor SSH para identificarse cuando inicia sesión en él se encuentran /etc/ssh/y generalmente se denominan algo así ssh_host_rsa_key.
En realidad, puede cambiar dónde busca el servidor SSH la clave en el archivo con la configuración./etc/ssh/sshd_configHostKey /path/to/host/key
Por defecto, ssh-keygencreará una clave para el usuario actual, que, por defecto, se almacenará en ~/.ssh. El formato de una clave de usuario y una clave de servidor es el mismo; la diferencia es dónde se colocan y si /etc/ssh/sshd_configtiene una HostKeydirectiva que los señale. Cuando instala el paquete openssh-server, automáticamente genera claves para que el servidor las use. De ahí provienen las llaves con la huella digital desconocida. Si desea ver la huella digital de la clave del servidor SSH (RSA *), puede ejecutar ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub.
* Existen diferentes algoritmos de encriptación. Cada uno usa una clave diferente. Los más comunes son DSA (débil), RSA (antiguo valor predeterminado) y ECDSA (nuevo valor predeterminado).
Los resultados de Google para "establecer huella digital ssh", aunque esos términos son técnicamente incorrectos, son sorprendentemente malos. Bien que encontré esto entre ellos.
Bart van Heukelom
44
Gracias por esto. Una nota: 'sudo' no es obligatorio si apunta ssh-keygen a la clave pública. Es decir: ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub. Además, para mi instalación, fue la clave ECDSA, y no la clave RSA, la que estaba usando el demonio ssh, así que de hecho lo que tuve que ejecutar fue ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub.
John Clements
¿Hay algún problema para obtener las claves públicas de mi disco duro anterior y usarlas en mi nueva instalación, sobrescribiéndolas en / etc / ssh? Una clave es una clave ¿verdad?
Adam
@ Adam, no veo ningún problema para hacerlo. Eso debería ayudar a evitar problemas cuando vayas a iniciar sesión de forma remota y la clave ha cambiado (lo que sucede si reinstalas una nueva clave que se genera).
Azendale
3
Cuando me conecto ssha un host desde 14.04 por primera vez, muestra la huella digital MD5. Para que ssh-keygen16.04 muestre la huella digital MD5, debe usar la -E md5opción.
jarno
15
Las claves de host SSH se almacenan en /etc/ssh/, que generalmente no necesita elegir. Estas claves se generaron cuando se instaló el paquete openssh-server.
Puede enumerar la huella digital de las claves ssh-keygen -l -f /etc/ssh/ssh_host_key.pubaunque deberá repetir esto para cada clave pública.
ssh-keygenno genera la huella digital SSH en su servidor. Eso es generado por el servidor SSH. ssh-keygencrea un par de claves pública / privada para su sistema que luego puede usar para acceder a su servidor SSH sin tener que transmitir una contraseña de texto sin formato al servidor.
La huella digital de su servidor obviamente no se mostrará como la huella digital del par de claves pública / privada que generó, ya que están separadas entre sí.
Tenga en cuenta que debe poder generar claves ssh para su servidor (al contrario de lo que dice), pero solo tiene que colocarlas en el lugar correcto para que se utilicen con ese fin.
ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
. Además, para mi instalación, fue la clave ECDSA, y no la clave RSA, la que estaba usando el demonio ssh, así que de hecho lo que tuve que ejecutar fuessh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub
.ssh
a un host desde 14.04 por primera vez, muestra la huella digital MD5. Para quessh-keygen
16.04 muestre la huella digital MD5, debe usar la-E md5
opción.Las claves de host SSH se almacenan en
/etc/ssh/
, que generalmente no necesita elegir. Estas claves se generaron cuando se instaló el paquete openssh-server.Puede enumerar la huella digital de las claves
ssh-keygen -l -f /etc/ssh/ssh_host_key.pub
aunque deberá repetir esto para cada clave pública.fuente
ssh-keygen
no genera la huella digital SSH en su servidor. Eso es generado por el servidor SSH.ssh-keygen
crea un par de claves pública / privada para su sistema que luego puede usar para acceder a su servidor SSH sin tener que transmitir una contraseña de texto sin formato al servidor.La huella digital de su servidor obviamente no se mostrará como la huella digital del par de claves pública / privada que generó, ya que están separadas entre sí.
fuente