Nie można ssh w nowej instalacji Vagrant z 13.04

9

Użyłem obrazu Vagrant dla 13.04 z http://cloud-images.ubuntu.com/vagrant/raring/current/raring-server-cloudimg-i386-vagrant-disk1.box, aby utworzyć nową maszynę wirtualną i próbowałem połączyć się z używając ssh. Jednak SSH zawsze rozłączał się natychmiast, nawet nie przechodząc do etapu, w którym próbował się uwierzytelnić.

Otworzyłem maszynę wirtualną w interfejsie GUI VirtualBox i spojrzałem na plik dziennika SSH (auth.log). Było pełne takich linii:

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]

Problem został rozwiązany przez wykonanie następujących poleceń:

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

Zakładam, że powinny one działać w pewnym momencie automatycznie, szczególnie biorąc pod uwagę, że (a) nie musiałem uruchamiać ich sam, kiedy instalowałem Ubuntu z obrazu ISO, oraz (b) ponieważ Vagrant powinien zostać zaprojektowany tak, aby był uruchamiany po uruchomieniu vagrant upmożesz natychmiast użyć maszyny wirtualnej bez dodatkowej konfiguracji.

Być może w najbliższej przyszłości będę musiał utworzyć dużą liczbę maszyn wirtualnych i miałem nadzieję, że będę mógł to zrobić za pomocą Vagrant, ale nie mogę tego zrobić, jeśli będę musiał ręcznie naprawić SSH na każdym z nich.

Czy ktoś wie, dlaczego tak się dzieje i co można zrobić, aby to naprawić? Czy powinienem zgłosić to jako błąd?

Moshe Katz
źródło
Czy zainstalowałeś najnowszą wersję vagrantna swoim hoście? Co powiesz na włączenie błędnego debugowania i zobaczenie, co się stanie? vagrant sshużywa niepewnej pary kluczy włóczęgi do uwierzytelnienia klucza pub.
Terry Wang
Tak, to najnowszy włóczęga. Zauważ, że moim problemem nie jest błędna para kluczy, to nie jest ustawiony klucz maszynowy serwera SSH. Jeśli serwer SSH nie ma klucza komputera, nie można się z nim połączyć.
Moshe Katz
Właśnie wypróbowałem nową maszynę wirtualną 12.10 i to samo się stało.
Moshe Katz
Przepraszamy, nie przeczytałem dokładnie pytania. Byłem problemem z kluczem hosta sshd, a nie uwierzytelnianiem klucza publicznego. Wygląda na to, że podczas pierwszego rozruchu obraz w chmurze Ubuntu nie wygenerował nowych kluczy hosta (jeśli NIE został znaleziony). Można to zrobić test -f /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-serverlub użyć ssh-keygendo wygenerowania kluczy.
Terry Wang
Powinien być test -e /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-serverw /etc/rc.localskrypcie.
Terry Wang

Odpowiedzi:

5

Jest to problem z kluczem hosta SSH (NIE związany z uwierzytelnianiem klucza publicznego).

Wygląda na to, że problem polegał na tym, że obraz Vagrant w chmurze ubuntu nie wygenerował nowych kluczy hosta (jeśli ich nie ma /etc/ssh/) podczas pierwszego rozruchu ( vagrant up).

Oprócz ręcznego generowania kluczy hosta SSH wspomnianych przez 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

Można to również zrobić, dodając następujące polecenie w /etc/rc.local

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

Mam nadzieję, że to pomoże.

Terry Wang
źródło
1
To rozwiązanie tymczasowe, ale czy nie powinniśmy zgłaszać go jako błędu na tym obrazie? Czy wszystkie klucze nie powinny być już wstępnie wygenerowane?
Radek Simko,
5

Obejście:

  • Zaimportuj urządzenie ~ / .vagrant.d / box / raring / box.ovf do VirtualBox

    VBoxManage import ~/.vagrant.d/boxes/raring/box.ovf
    
  • Uzyskaj nazwę maszyny wirtualnej

    VBoxManage list vms
    
  • Uruchom maszynę wirtualną

    VBoxManage startvm ubuntu-cloudimg-raring-vagrant-amd64
    
  • Dołącz następujący wiersz w /etc/rc.local (Oczywiście w samej maszynie wirtualnej!):

    test -f /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server
    
  • Zamknij maszynę wirtualną

    sudo halt
    
  • Usuń stare obrazy

    rm ~/.vagrant.d/boxes/raring/box.ovf ~/.vagrant.d/boxes/raring/box-disk1.vmdk
    
  • Eksportuj maszynę wirtualną w formacie .ovf

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

Gotowy :)

Zrobił także raport o błędzie: https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1217950

S0me0ne
źródło
3

Wygląda na to, że był to błąd w starszych skrzynkach podstawowych. W bieżących obrazach skrzynki podstawowej (wygenerowanych 20 sierpnia 2013 r.) Klucze wydają się być tworzone automatycznie przy pierwszym uruchomieniu skrzynki.

Moshe Katz
źródło
W tej chwili napotykam ten błąd (ponownie) i według raportu o błędzie @ S0me0ne wydaje się, że inni też są. Potwierdziłem w / etc / ssh, że plików kluczy nie ma. Wykorzystano zdjęcia z 24 września.
malvim
Okay, właśnie wypuścili kolejną „partię” maszyn (od 28 września 2013 r.), Które prawidłowo tworzą brakujące klucze. Udało mi się to zweryfikować, importując skrzynki za pomocą VBoxManage. Co dziwne, kiedy używam „włóczęgi”, plików tam nie ma! Czy istnieje różnica między importowaniem bezpośrednio do VB a używaniem włóczęgi?
malvim