Não olhei para o código, mas:
As chaves do host ECDSA são preferidas ao aprender as chaves do host pela primeira vez, ou pode ser aprendido usando ssh-keyscan (1).
Fonte: link
Acabei de descobrir que na minha máquina Ubuntu tenho mais chaves públicas para servir no diretório /etc/ssh
:
$ ll /etc/ssh
total 296K
-rw-r--r-- 1 root root 237K lip 3 2013 moduli
-rw-r--r-- 1 root root 1.7K kwi 17 12:43 ssh_config
-rw-r--r-- 1 root root 1.7K mar 25 23:06 ssh_config.dpkg-old
-rw-r--r-- 1 root root 1.7K kwi 17 12:43 ssh_config.lwidentity.bak
-rw-r--r-- 1 root root 1.7K mar 25 23:06 ssh_config.lwidentity.orig
-rw-r--r-- 1 root root 2.6K kwi 17 12:43 sshd_config
-rw-r--r-- 1 root root 2.6K kwi 17 12:43 sshd_config.lwidentity.bak
-rw-r--r-- 1 root root 2.5K mar 25 23:06 sshd_config.lwidentity.orig
-rw------- 1 root root 672 sty 4 2014 ssh_host_dsa_key
-rw-r--r-- 1 root root 605 sty 4 2014 ssh_host_dsa_key.pub
-rw------- 1 root root 227 sty 4 2014 ssh_host_ecdsa_key
-rw-r--r-- 1 root root 177 sty 4 2014 ssh_host_ecdsa_key.pub
-rw------- 1 root root 1.7K sty 4 2014 ssh_host_rsa_key
-rw-r--r-- 1 root root 397 sty 4 2014 ssh_host_rsa_key.pub
-rw-r--r-- 1 root root 338 kwi 17 12:36 ssh_import_id
Tendo isto e:
$ find /etc/ssh ~/.ssh -name "*.pub" -exec ssh-keygen -l -f {} \;
256 da:f0:03:79:68:f8:04:b1:07:d8:8f:fe:3d:91:0e:aa root@icanseeyou (ECDSA)
2048 3f:d7:9f:68:1b:b3:1a:a9:47:5b:47:5b:27:88:8c:aa root@icanseeyou (RSA)
1024 7f:24:ca:0f:e3:84:8e:f9:1c:b3:49:d1:f4:39:a1:aa root@icanseeyou (DSA)
4096 ae:86:c9:88:36:36:37:2f:84:5b:83:b4:45:17:41:aa USER@icanseeyou (RSA)
Sempre recebo a chave ECDSA como a primeira (a que é veiculada)
$ ssh -p 222 USER@localhost
The authenticity of host '[localhost]:222 ([127.0.0.1]:222)' can't be established.
ECDSA key fingerprint is da:f0:03:79:68:f8:04:b1:07:d8:8f:fe:3d:91:0e:aa.
Are you sure you want to continue connecting (yes/no)?
/etc/ssh/sshd_config
11 HostKey /etc/ssh/ssh_host_rsa_key
12 HostKey /etc/ssh/ssh_host_dsa_key
13 HostKey /etc/ssh/ssh_host_ecdsa_key
Como isso funciona? Por que a chave ECDSA é a primeira a ser servida?
Não olhei para o código, mas:
As chaves do host ECDSA são preferidas ao aprender as chaves do host pela primeira vez, ou pode ser aprendido usando ssh-keyscan (1).
Fonte: link