Acabei de resolver um problema semelhante com o mesmo sintoma: desconectado após:
debug1: SSH2_MSG_KEXINIT sent.
Executando o servidor ssh em duas portas, 22 e 'outra porta não divulgada'. Eu poderia conectar usando a porta 22, mas não usando a outra porta com a desconexão súbita acima antes da troca de chave do host.
Descobrimos que sshd para a porta 22 estava sendo executado como root enquanto sshd para a outra porta que estava sendo executada como usuário ubuntu . Obviamente, o usuário do ubuntu não pode ler a chave de host privada como mostrado em /var/log/auth.log :
error: Could not load host key: /etc/ssh/ssh_host_rsa_key
error: Could not load host key: /etc/ssh/ssh_host_dsa_key
fatal: No supported key exchange algorithms
O comando 'sudo netstat -nap | grep ssh ' retornou 2 processos diferentes para a porta 22 e a outra porta (editada):
$ sudo netstat -nap | grep ssh
tcp 0 0 0.0.0.0:other port 0.0.0.0:* LISTEN 17620/sshd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 31160/sshd
tcp6 0 0 :::other port :::* LISTEN 17620/sshd
tcp6 0 0 :::22 :::* LISTEN 31160/sshd
Mostra que o servidor ssh na porta 22 usa o processo # 31160 enquanto a outra porta usa a porta # 17620 .
E 'ps -eaf | grep ssh 'mostrou que um processo estava rodando como root enquanto o outro estava rodando como ubuntu (editado):
$ ps -eaf | grep ssh
ubuntu 17620 1 0 Apr25 ? 00:00:00 /usr/sbin/sshd
root 31160 1 0 08:35 ? 00:00:00 /usr/sbin/sshd
Para resolver o problema, eu tive que matar o processo rodando como o ubuntu ( kill 17620 ) e reiniciar o servidor ssh usando o comando 'sudo /etc/init.d/ssh restart '.
Eu não sei ao certo como isso aconteceu, mas depois de tentar reproduzir o problema, descobri que talvez eu tenha tentado reiniciar o sshd sem o root. Funciona, mas a nova porta é hospedada pelo usuário do Ubuntu:
$ /etc/init.d/ssh restart
Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_dsa_key
* Restarting OpenBSD Secure Shell server sshd
start-stop-daemon: warning: failed to kill 31884: Operation not permitted
Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_dsa_key
Se foi isso que fiz, fui mordido por ignorar essas mensagens de erro. No entanto, isso pode ser considerado um bug, já que o servidor não pode mais ser reiniciado adequadamente sem matar o sshd de execução do Ubuntu.
Para aqueles que se perguntam, eu uso outra porta em vez da porta 22 para evitar a maioria das tentativas de conexão na porta 22 em todos os meus servidores e, em seguida, bloquear a porta 22 usando um firewall. Isto é simples, mas funciona e permite-me ligar de qualquer endereço IP.