Я использовал изображение 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 (НЕ относится к аутентификации с открытым ключом).
Похоже, проблема заключалась в том, что в облачном брандмауэре ubuntu не удалось сгенерировать новые ключи хоста (если их нет в /etc/ssh/) во время первой загрузки (vagrant up).
В дополнение к ручному созданию ключей хоста SSH, упомянутых Моше
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 в VirtualBoxVBoxManage import ~/.vagrant.d/boxes/raring/box.ovf
Получить имя VM VBoxManage list vms
Запустить виртуальную машину VBoxManage startvm ubuntu-cloudimg-raring-vagrant-amd64
Включить следующую строку в /etc/rc.local (конечно, в самой виртуальной машине!): 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
Выполнено:) [ ! d16]
Также сделал ошибку: https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1217950