networking - Vagrant - 使用私有(private)接口(interface)时如何配置 vagrant ssh?

标签 networking vagrant

我有一个带有 3 个 vm 的 multivm vagrantfile 设置。
其中两个 vm 的 NAT 网络接口(interface)被禁用,并且仅在内部接口(interface)上使用静态 ip。

副作用是我不再能够运行 vagrant ssh foo连接到虚拟机。

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  #config.vm.box = "PuppetlabsCent64"
  #config.vm.box_url = "http://puppet-vagrant-boxes.puppetlabs.com/centos-64-x64-vbox4210-nocm.box"
  config.vm.box = "Debian-7-2"
  config.vm.box_url= "https://dl.dropboxusercontent.com/u/197673519/debian-7.2.0.box"
  # Create a private network, which allows host-only access to the machine
  # using a specific IP.
  # config.vm.network :private_network, ip: "192.168.45.10"

  # Create a public network, which generally matched to bridged network.
  # Bridged networks make the machine appear as another physical device on
  # your network.
  # config.vm.network :public_network

  config.vm.synced_folder ".", "/vagrant_data"

  config.vm.provider :virtualbox do |vb|
   vb.customize ["modifyvm", :id, "--memory", "512"]
  end

     config.vm.define "r", primary: true  do |router|
       router.vm.box = "Debian-7-2"
       router.vm.network :private_network, ip: "192.168.45.11"

     end

     config.vm.define "r1" do |roomate1|
       roomate1.vm.box = "Debian-7-2"
       roomate1.vm.network :private_network, ip: "192.168.45.12"
     end

     config.vm.define "r2" do |roomate2|
       roomate2.vm.box = "Debian-7-2"
       roomate2.vm.network :private_network, ip: "192.168.45.13"
     end

   config.vm.provider :virtualbox do |vb|
     vb.customize "post-boot",["controlvm", :id, "setlinkstate1", "off"]
   end

end

This thread在 vagrant 用户组中,给了我检查 default vagrant config 的想法.

我尝试了以下每一项都没有运气
 config.vm.define "r", primary: true  do |router|
   router.vm.box = "Debian-7-2"
   router.vm.network :private_network, ip: "192.168.45.11"
   #config.ssh.host "192.168.45.11"
   #router.vm.network :forwarded_port, host: "192.168.45.11"
   #router.vm.box_url = "192.168.45.11"
   #router.vm.boot_timeout = 200
   #router.vagrant.host = "192.168.45.11"
   #router.ssh.host = "192.168.45.11"
 end

#non working 
sowen@pv-sowen-nb:~/Code/flatmate-firewall$ vagrant ssh-config r
Host r
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/sowen/.vagrant.d/insecure_private_key
  IdentitiesOnly yes
  LogLevel FATAL

运行vagrant up在引导过程中挂起,导致我必须等待 300 秒才能启动每个虚拟机。

错误信息
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. This can
mean a number of things.

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.

有没有办法配置vagrant ssh使用正确的 ip & port 以免超时?

来源:https://github.com/spuder/flatmate-firewall/blob/master/Vagrantfile

最佳答案

我可以在您的 Vagrantfile 中看到您的问题,但我向您展示了我的两台机器示例。

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  # All Vagrant configuration is done here. The most common configuration
  # options are documented and commented below. For a complete reference,
  # please see the online documentation at vagrantup.com.

  config.vm.define 'app' do |app_config|
    app_config.vm.box = 'ubuntu_app'
    app_config.vm.host_name = 'app'
    app_config.vm.network "private_network", ip: "192.168.33.33"
  end

  config.vm.define 'web' do |web_config|
    web_config.vm.box = 'ubuntu_app'
    web_config.vm.host_name = 'web'
    web_config.vm.network "private_network", ip: "192.168.33.34"
  end
end

然后我使用标准 ssh 连接连接到“网络”机器
roberto@rcisla-pc:~/Desktop/vagrant$ ssh vagrant@web -p 22
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic-pae i686)

 * Documentation:  https://help.ubuntu.com/
Welcome to your Vagrant-built virtual machine.
Last login: Sun Jan 12 13:18:18 2014 from 192.168.33.1
vagrant@web:~$

等同于“应用机器”
roberto@rcisla-pc:~/Desktop/vagrant$ ssh vagrant@app -p 22
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic-pae i686)

 * Documentation:  https://help.ubuntu.com/
Welcome to your Vagrant-built virtual machine.
Last login: Sun Jan 12 13:18:18 2014 from 192.168.33.1
vagrant@app:~$

我希望这会有所帮助。

关于networking - Vagrant - 使用私有(private)接口(interface)时如何配置 vagrant ssh?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20941224/

相关文章:

c++ - 使用 unix 套接字的同步 boost asio 中的延迟/延迟

单节点 vagrant VM 上的 Hadoop - 启动 start-all.sh 时连接被拒绝

vagrant - “vagrant up”给出 'An error occurred while downloading'

node.js - vagrant 上的 PM2 - 在安装共享文件夹后启动应用程序

ubuntu - vagrant puppet 符号链接(symbolic link)问题

java - 没有从服务器获得任何响应,但能够从 telnet 获得响应

python - 客户端脚本在UDP套接字上停止时获取ConnectionResetError

linux - 简单通用即插即用 ( uPNP ) 在网络上查找 Raspberry Pi

python - 在接口(interface)启动时,可以扫描特定的 MAC 地址吗?

php - Vagrant phpmyadmin php 显示为纯文本问题