Usei a imagem do Vagrant para 13.04 em http://cloud-images.ubuntu.com/vagrant/raring/current/raring-server-cloudimg-i386-vagrant-disk1.box para criar uma nova máquina virtual e tentei me conectar ao usando ssh. No entanto, o SSH sempre se desconectava imediatamente, sem sequer chegar ao estágio em que tentava se autenticar.
Abri a VM na GUI do VirtualBox e observei o arquivo de log SSH (auth.log). Estava cheio de linhas como esta:
Jul 25 17:57:02 vagrant-ubuntu-raring-32 sshd[898]: error: Could not load host key: /etc/ssh/ssh_host_rsa_key
Jul 25 17:57:02 vagrant-ubuntu-raring-32 sshd[898]: error: Could not load host key: /etc/ssh/ssh_host_dsa_key
Jul 25 17:57:02 vagrant-ubuntu-raring-32 sshd[898]: error: Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Jul 25 17:57:02 vagrant-ubuntu-raring-32 sshd[898]: fatal: No supported key exchange algorithms [preauth]
O problema foi resolvido executando os seguintes comandos:
sudo ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key -N '' -t ecdsa
sudo ssh-keygen -f /etc/ssh/ssh_host_dsa_key -N '' -t dsa
sudo ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N '' -t rsa
Eu assumiria que eles deveriam ser executados automaticamente em algum momento, especialmente considerando que (a) eu não precisei executá-los quando instalei o Ubuntu a partir de uma imagem ISO; e (b) porque o Vagrant deve ser projetado para ser executado após a execução vagrant up
você pode usar imediatamente a VM sem nenhuma configuração adicional.
Talvez eu precise criar um grande número de máquinas virtuais em um futuro próximo e esperava poder usar o Vagrant para fazê-lo, mas não posso fazê-lo se precisar corrigir manualmente o SSH em cada uma delas.
Alguém sabe por que isso acontece e o que pode ser feito para corrigi-lo? Devo denunciá-lo como um bug?
test -f /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server
ou use o ssh-keygen
para gerar as chaves.
test -e /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server
no /etc/rc.local
script.
vagrant
em seu host? Que tal ativar a depuração de vagabundos e ver o que acontece?vagrant ssh
usa o par de chaves inseguro do vagrant para autenticação de chave de pub.