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 up
moż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?
vagrant
na swoim hoście? Co powiesz na włączenie błędnego debugowania i zobaczenie, co się stanie?vagrant ssh
używa niepewnej pary kluczy włóczęgi do uwierzytelnienia klucza pub.test -f /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server
lub użyćssh-keygen
do wygenerowania kluczy.test -e /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server
w/etc/rc.local
skrypcie.Odpowiedzi:
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
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.
źródło
Obejście:
Zaimportuj urządzenie ~ / .vagrant.d / box / raring / box.ovf do VirtualBox
Uzyskaj nazwę maszyny wirtualnej
Uruchom maszynę wirtualną
Dołącz następujący wiersz w /etc/rc.local (Oczywiście w samej maszynie wirtualnej!):
Zamknij maszynę wirtualną
Usuń stare obrazy
Eksportuj maszynę wirtualną w formacie .ovf
Gotowy :)
Zrobił także raport o błędzie: https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1217950
źródło
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.
źródło