Não é possível ssh na nova instalação do Vagrant da 13.04

9

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 upvocê 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?

Moshe Katz
fonte
Você instalou o mais recente vagrantem seu host? Que tal ativar a depuração de vagabundos e ver o que acontece? vagrant sshusa o par de chaves inseguro do vagrant para autenticação de chave de pub.
Terry Wang
Sim, este é o mais novo vagabundo. Observe que meu problema não é o par de chaves vagantes, é a chave Machine do servidor SSH que não está sendo definida. Se o servidor SSH não tiver uma chave de máquina, não há como se conectar a ele.
Moshe Katz
Eu apenas tentei uma nova 12.10 VM e a mesma coisa aconteceu.
Moshe Katz
Desculpe, não li a pergunta com atenção. Eu estava com problema de chave de host sshd e não com autenticação de chave pública. Parece que durante a primeira imagem da nuvem de inicialização do Ubuntu falhou ao gerar as novas chaves do host (se NÃO encontrado). Isso pode ser feito por test -f /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-serverou use o ssh-keygenpara gerar as chaves.
Terry Wang
Deve haver test -e /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-serverno /etc/rc.localscript.
Terry Wang

Respostas:

5

Este é um problema de chave do host SSH (NÃO relacionado à autenticação de chave pública).

Parece que o problema foi que a imagem vagante da nuvem ubuntu falhou ao gerar as novas chaves do host (se não estiverem lá /etc/ssh/) durante a primeira inicialização ( vagrant up).

Além de gerar manualmente as chaves de host SSH mencionadas por Moshe

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

Isso também pode ser feito adicionando o seguinte comando no diretório /etc/rc.local

test -f /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server

Espero que ajude.

Terry Wang
fonte
11
Essa é uma solução temporária, mas não devemos denunciá-la como um bug nessa imagem? Todas as chaves já não devem estar pré-geradas?
Radek Simko
5

Solução alternativa:

  • Importar o appliance ~ / .vagrant.d / boxes / raring / box.ovf no VirtualBox

    VBoxManage import ~/.vagrant.d/boxes/raring/box.ovf
    
  • Obter nome da VM

    VBoxManage list vms
    
  • Inicie a VM

    VBoxManage startvm ubuntu-cloudimg-raring-vagrant-amd64
    
  • Inclua a seguinte linha no /etc/rc.local (é claro na própria VM!):

    test -f /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server
    
  • VM de desligamento

    sudo halt
    
  • Excluir imagens antigas

    rm ~/.vagrant.d/boxes/raring/box.ovf ~/.vagrant.d/boxes/raring/box-disk1.vmdk
    
  • Exportar VM no formato .ovf

    VBoxManage export ubuntu-cloudimg-raring-vagrant-amd64 --output ~/.vagrant.d/boxes/raring/box.ovf
    

Feito :)

Também fez um relatório de bug: https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1217950

S0me0ne
fonte
3

Parece ter sido um erro nas caixas base mais antigas. Nas imagens atuais da caixa base (geradas em 20 de agosto de 2013), as chaves parecem ser criadas automaticamente quando a caixa é inicializada pela primeira vez.

Moshe Katz
fonte
Estou encontrando este bug (novamente) agora, e parece pelo relatório de erros de @ S0me0ne que outras pessoas também estão. Eu confirmei no / etc / ssh que os arquivos principais não estão lá. Isso foi usando as imagens de 24 de setembro.
malvim
Ok, eles acabaram de lançar outro "lote" de máquinas (de 28 de setembro de 2013) que cria as chaves ausentes corretamente. Consegui verificar isso importando as caixas usando o VBoxManage. Estranhamente, quando eu uso "vagrant up", os arquivos não estão lá! Existe uma diferença entre importar diretamente para o VB e usar o vagrant?
malvim