Я использовал образ Vagrant для 13.04 из http://cloud-images.ubuntu.com/vagrant/raring/current/raring-server-cloudimg-i386-vagrant-disk1.box для создания новую виртуальную машину и попытался подключиться к ней с помощью ssh. Тем не менее, SSH всегда отключался немедленно, даже не доходя до стадии, на которой он пытался аутентифицироваться.
Я открыл виртуальную машину в графическом интерфейсе VirtualBox и посмотрел файл журнала SSH (auth.log). Он был полон строк вроде этого:
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]
Проблема была решена путем выполнения следующих команд:
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
Я бы предположил, что они должны запускаться автоматически в какой-то момент, особенно учитывая что (а) мне не нужно было запускать их самостоятельно, когда я установил Ubuntu из ISO-образа, и (б) потому, что предполагается, что Vagrant спроектирован так, что после запуска vagrant up
вы можете сразу использовать ВМ без какой-либо дополнительной настройки.
Мне может понадобиться создать большое количество виртуальных машин в ближайшем будущем, и я надеялся, что смогу использовать Vagrant, но не смогу, если мне придется вручную исправить SSH на каждый.
Кто-нибудь знает, почему это происходит и что можно сделать, чтобы это исправить? Должен ли я сообщить об этом как об ошибке?
Это - проблема ключа хоста SSH (НЕ связанный с аутентификацией с открытым ключом).
Похож на проблему, был то, что облачному изображению бродяги человечности не удалось генерировать новые ключи хоста (если они не находятся там в /etc/ssh/
) во время 1-й начальной загрузки (vagrant up
).
В дополнение к вручную генерируют ключи хоста SSH, упомянутые 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
Это может также быть сделано путем включения следующей команды /etc/rc.local
test -f /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server
Надежда это помогает.
Workaroud:
Импортируйте ~/.vagrant.d/boxes/raring/box.ovf устройство в VirtualBox
VBoxManage import ~/.vagrant.d/boxes/raring/box.ovf
Получите имя VM
VBoxManage list vms
Запустите VM
VBoxManage startvm ubuntu-cloudimg-raring-vagrant-amd64
Включайте следующую строку в/etc/rc.local (Конечно, в самом VM!):
test -f /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server
Завершение работы VM
sudo halt
Удалите старые изображения
rm ~/.vagrant.d/boxes/raring/box.ovf ~/.vagrant.d/boxes/raring/box-disk1.vmdk
Экспортируйте VM в .ovf формате
VBoxManage export ubuntu-cloudimg-raring-vagrant-amd64 --output ~/.vagrant.d/boxes/raring/box.ovf
Сделанный :)
Сделал также bugreport: https://bugs.launchpad.net/ubuntu / + source/cloud-init / + ошибка/1217950
Похоже, что это была ошибка в старых базовых коробках. На текущих изображениях базового блока (сгенерировано 20 августа 2013 г.) ключи создаются автоматически при первой загрузке блока.