Невозможно установить ssh в новую версию Vagrant от 13.04

9

Я использовал образ 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 на каждой.

Кто-нибудь знает, почему это происходит и что можно сделать, чтобы это исправить? Должен ли я сообщить об этом как об ошибке?

Моше Кац
источник
Вы установили последнюю версию vagrantна своем хосте? Как насчет включения бродячей отладки и посмотреть, что радует? vagrant sshиспользует небезопасную пару ключей vagrant для аутентификации ключа паба.
Терри Ван
Да, это самый новый бродяга. Обратите внимание, что моя проблема не в паре бродячих ключей, а в том, что не установлен ключ компьютера SSH-сервера. Если у SSH-сервера нет машинного ключа, к нему невозможно подключиться.
Моше Кац
Я только что попробовал новую 12.10 ВМ, и произошло то же самое.
Моше Кац
Извините, не внимательно прочитал вопрос. У меня была проблема с ключом хоста sshd, а не с открытым ключом. Похоже, что во время 1-й загрузки образу облака Ubuntu не удалось сгенерировать новые ключи хоста (если он НЕ найден). Это можно сделать с помощью test -f /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-serverили использовать ssh-keygenдля генерации ключей.
Терри Ван
Там должно быть test -e /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-serverв /etc/rc.localсценарии.
Терри Ван

Ответы:

5

Это проблема с ключом хоста SSH (НЕ связана с аутентификацией с открытым ключом).

Похоже, проблема заключалась в том, что бродячему образу облака ubuntu не удалось сгенерировать новые ключи хоста (если их там нет /etc/ssh/) во время первой загрузки ( 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

Надеюсь, поможет.

Терри Ван
источник
1
Это временное решение, но разве мы не должны сообщать об этом как об ошибке в этом изображении? Разве все ключи не должны быть предварительно созданы?
Радек Симко
5

Workaroud:

  • Импортируйте устройство ~ / .vagrant.d / boxes / raring / box.ovf в VirtualBox

    VBoxManage import ~/.vagrant.d/boxes/raring/box.ovf
    
  • Получить имя виртуальной машины

    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
    
  • Выключение ВМ

    sudo halt
    
  • Удалить старые изображения

    rm ~/.vagrant.d/boxes/raring/box.ovf ~/.vagrant.d/boxes/raring/box-disk1.vmdk
    
  • Экспорт ВМ в формат .ovf

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

Выполнено :)

Сделал также отчет об ошибке: https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1217950

S0me0ne
источник
3

Похоже, это была ошибка в старых базовых коробках. В текущих изображениях базового блока (созданных 20 августа 2013 г.) ключи создаются автоматически при первой загрузке блока.

Моше Кац
источник
Я сталкиваюсь с этой ошибкой (снова) прямо сейчас, и, судя по сообщению об ошибке @ S0me0ne, другие люди тоже. Я подтвердил в / etc / ssh, что файлов ключей там нет. Это было с использованием изображений 24 сентября.
Мальв
Хорошо, они только что выпустили еще одну «партию» машин (от 28 сентября 2013 года), которые правильно создают отсутствующие ключи. Я смог убедиться в этом, импортировав коробки с помощью VBoxManage. Странно, когда я использую "vagrant up", файлов там нет! Есть ли разница между импортом напрямую в VB и использованием vagrant?
Мальв