Подтвердить что ты не робот

Vagrant не может перенаправить указанные порты на эту виртуальную машину

Я использую Vagrant для одного профиля окна. Теперь я хочу использовать Vagrant для другого блока (b2), но он говорит, что экземпляр bioiq потребляет перенаправленный порт 2222 (который он есть).

Теперь, если я настрою b2 с приведенным ниже, Vagrant все еще пытается использовать 2222.

Vagrant.configure("2") do |config|

  config.vm.box = 'precise32'
  config.vm.box_url = 'http://files.vagrantup.com/precise32.box'

  config.vm.network :forwarded_port, guest: 22, host: 2323

  # Neither of these fix my problem 
  # config.vm.network :private_network, type: :dhcp 
  # config.vm.network :private_network, ip: "10.0.0.200"
end

Я пробовал различные способы из других вопросов SO, чтобы установить : forwarded_port (см. здесь и здесь). Я также пробовал этот Сообщение в Google Group, безрезультатно. Я продолжаю получать это сообщение.

Vagrant cannot forward the specified ports on this VM, since they
would collide with some other application that is already listening
on these ports. The forwarded port to 2222 is already in use
on the host machine.

To fix this, modify your current projects Vagrantfile to use another
port. Example, where '1234' would be replaced by a unique host port:

  config.vm.network :forwarded_port, guest: 22, host: 1234

Sometimes, Vagrant will attempt to auto-correct this for you. In this
case, Vagrant was unable to. This is usually because the guest machine
is in a state which doesn't allow modifying port forwarding.

Я не знаю, почему Вагрант последовательно игнорирует мои директивы. Выложенная конфигурация не работает. Кто-нибудь преодолел это?

4b9b3361

Ответ 1

В случае порта ssh, Vagrant сам решает конфликты портов:

==> ubuntu64: Fixed port collision for 22 => 2222. Now on port 2200.

Однако вы все равно можете создать неизбежное столкновение:

  • Создание первого бродячего env (он получит порт 2222 для ssh)
  • Приостановить, что env (vagrant suspend)
  • Создайте второй бродячий env (он снова получит порт 2222, так как он теперь не используется)
  • Попробуйте снова запустить первую среду vagrant up

Вы получите сообщение об ошибке, которое вы получаете сейчас.

Решение состоит в том, чтобы использовать vagrant reload, чтобы брандмауэр отказался от состояния виртуальной машины (что означает, что он будет закрывать его с трудом), поэтому будьте осторожны, если у вас там какая-либо несохраненная работа) и снова запустите среду, ssh на пути сам по себе.

Ответ 2

Я только что столкнулся с проблемой в текущих версиях Mac OSX (10.9.4) и VirtualBox (4.3.14), где по умолчанию ssh-порт 2222 как неиспользуемый, так и несвязанный бродячим. Это привело к тому, что соединение ssh проверки работоспособности было отключено до бесконечности.

Это не такая же проблема, но явный переадресатор разрешил ее:

config.vm.network :forwarded_port, guest: 22, host: 2201, id: "ssh", auto_correct: true

Это предложение исходит из комментария к Vagrant GitHub проблеме 1740.

Невозможно определить, был ли обнаружен порт, перенаправленный на 22, или если ID используется, но он работает для меня.