Назад | Перейти на главную страницу

Почему я не могу подключиться к виртуальной машине Vagrant Ubuntu 20.04 по ssh, но могу подключиться к виртуальным машинам 18.04 и 16.04 на одном и том же хосте?

Я запускаю 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

Обходной путь, описанный в проблеме, сработал для меня.