Por defecto en Ubuntu, cuando instalamos openssh-server
se generan 4 claves públicas con sus correspondientes
claves privadas usando cada una un algoritmo diferente:
/etc/sshd/ssh_host_dsa_key.pub
- ssh-dss/etc/sshd/ssh_host_ecdsa_key.pub
- ecdsa-sha2-nistp256/etc/sshd/ssh_host_ed25519_key.pub
- ssh-ed25519/etc/sshd/ssh_host_rsa_key.pub
- ssh-rsa
Esas claves sirven para autentificar al servidor para evitar ataques tipo Man in the Middle.
Podemos obtener el fingerprint sha256 o md5 de cada una de ellas ejecutando en el servidor:
ssh-keygen -l -E sha256 -f <key>.pub
ssh-keygen -l -E md5 -f <key>.pub
El cliente que se conecta al servidor es el que decide qué claves quiere usar (ver) mediante la directiva HostKeyAlgorithms
de la configuración de ssh.
Si ejecutamos ssh -Q key
en el equipo del cliente se mostrará un listado en orden de los algoritmos que se usarán. Por ejemplo, en mi Macbook:
~ $ ssh -Q key
ssh-ed25519
[email protected]
ssh-rsa
ssh-dss
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
La primera vez que accedemos por ssh a un servidor, ssh nos muestra información de la clave del servidor para que decidamos si es válida y la almacene en el archivo .known_hosts
o no.
The authenticity of host 'x.x.x.x (x.x.x.x)' can't be established.
ED25519 key fingerprint is SHA256:DV7WuetI+4STnpQ08C0EK9i5H9f44Pt2UYgm8Y9fnek.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'x.x.x.x' (ED25519) to the list of known hosts.
En realidad se guardan en ese archivo 3 claves, las correspondientes a los algoritmos ssh-ed25519
, ssh-rsa
y ecdsa-sha2-nistp256
. El algoritmo ssh-dss
está en desuso y aunque se genera la clave, el servidor OpenSSH no la tiene configurada.