Я запускаю Vagrant 2.2.9 с помощью Virtualbox 6.1.12. Моя основная ОС - Ubuntu 20.04.
Мне нужно запускать виртуальные машины с разными версиями Ubuntu: 16.04 (xenial), 18.04 (bionic) и 20.04 (focal). Виртуальные машины Xenial и Bionic созданы нормально, и я могу подключиться к ним по SSH, но я не могу подключиться по SSH к Focal.
просто .Vagrantfile
:
-*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "ubuntu/focal64"
end
Когда я пытаюсь принести focal
ВМ вверх с vagrant up
процесс застревает на default: SSH auth method: private key
и в конечном итоге истекает время ожидания:
vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'ubuntu/focal64'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'ubuntu/focal64' version '20200720.0.0' is up to date...
==> default: Setting the name of the VM: testfocal_default_1595414135038_3222
==> default: Fixed port collision for 22 => 2222. Now on port 2205.
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 (guest) => 2205 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2205
default: SSH username: vagrant
default: SSH auth method: private key
Timed out while waiting for the machine to boot. This means that
Vagrant was unable to communicate with the guest machine within
the configured ("config.vm.boot_timeout" value) time period.
If you look above, you should be able to see the error(s) that
Vagrant had when attempting to connect to the machine. These errors
are usually good hints as to what may be wrong.
If you're using a custom box, make sure that networking is properly
working and you're able to connect to the machine. It is a common
problem that networking isn't setup properly in these boxes.
Verify that authentication configurations are also setup properly,
as well.
If the box appears to be booting properly, you may want to increase
the timeout ("config.vm.boot_timeout") value.
vagrant ssh
также истекает время после этого
Но выполнение того же процесса с xenial и bionic отлично работает, я могу запустить в них виртуальные машины и SSH.
Глядя на результат vagrant ssh-config
показывает существенную разницу между ними:
Для рабочих виртуальных машин Xenial / Bionic используется файл закрытого ключа, созданный на уровне проекта:
vagrant ssh-config
Host default
HostName 127.0.0.1
User vagrant
Port 2200
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /home/adria/dev/testbionic/.vagrant/machines/default/virtualbox/private_key
IdentitiesOnly yes
LogLevel FATAL
Но для виртуальных машин Focal используется файл закрытого ключа в домашней папке:
vagrant ssh-config
Host default
HostName 127.0.0.1
User vagrant
Port 2203
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /home/adria/.vagrant.d/insecure_private_key
IdentitiesOnly yes
LogLevel FATAL
Я создаю все виртуальные машины точно так же, поэтому я не знаю, почему в главном случае он выбирает другой закрытый ключ. Я был бы удивлен, если бы это было потому, что хост и гостевая ОС одинаковы, но это единственное, о чем я могу думать.
Есть идеи или указатели?
Оказывается, это было вызвано ошибкой на изображении фокального облака:
https://bugs.launchpad.net/cloud-images/+bug/1829625
Обходной путь, описанный в проблеме, сработал для меня.