如何在 Vagrant 来宾 VM 集群之间进行 ssh

Ian*_*nSR 11 virtualbox vagrant ubuntu-12.04

我有 3 个 Ubuntu 12.04 虚拟机,配置了桥接网络并使用 Vagrant 进行设置。我可以使用“vagrant ssh”从主机访问所有这些,但我不知道如何从一个来宾 VM 连接到另一个。

Tho*_*ner 6

在 Vagrantfile 中,给每台机器一个静态私有地址。

Vagrant.configure(2) do |config|
    config.vm.define "master" do |master|    
        master.vm.box = "ubuntu/trusty64"
        # You may wish to use a more obscure private ip, like 10.2.2.4
        master.vm.network "private_network", ip: "10.0.0.200"
    end
    config.vm.define "slave" do |slave|    
        slave.vm.box = "ubuntu/trusty64"
        # You may wish to use a more obscure private ip, like 10.2.2.5
        slave.vm.network "private_network", ip: "10.0.0.201"
    end
End
Run Code Online (Sandbox Code Playgroud)

在这些机器都启动后,您可以先按名称通过 ssh 进入

vagrant ssh master
Run Code Online (Sandbox Code Playgroud)

在此会话中,您可以通过其专用网络 ip ssh 到另一台机器:

ssh 10.0.0.201
Run Code Online (Sandbox Code Playgroud)

当系统提示用户/密码,您可以验证为vagrant/ vagrant,或进一步为自己的SSH。


此信息改编自以下帖子[1]

  1. Vagrant 虚拟机集群Jesse - jessesnet 2014-04-22。检索 2015-02-26


Oli*_*gey 5

我刚刚在复杂的多 CentOS (BoxCutter 6.9) VM Vagrant 设置中修复了这个问题。这个问题有两个级别,我的问题是2:

  1. 正确设置您的 Vagrant 配置,以便您拥有一个“private_network”,并且所有虚拟机的 IP 地址都位于同一子网(静态或 DHCP)中: https: //www.vagrantup.com/docs/networking/private_network.html

  2. 当在虚拟机之间进行 ssh 时,如果收到此错误: [root@vm01 ~]# ssh root@vm02 Permission denied (publickey,gssapi-keyex,gssapi-with-mic). 该错误消息意味着没有任何身份验证方法能够对您的会话进行身份验证,并且没有提及密码选项,因此密码身份验证可能已被禁用。要修复编辑/etc/ssh/sshd_config并检查您是否已将PasswordAuthentication yes其注释掉(#),然后sshd根据需要重新启动:(service sshd restart它不会断开任何会话,因为它很聪明)。


Mar*_*iae 1

如果您为它们设置了桥接接口,则意味着它们都属于您的标准 LAN。因此,您可以通过发出以下命令轻松地从另一个虚拟机访问虚拟机

 ssh myname@ip_of_vm_2
Run Code Online (Sandbox Code Playgroud)

您可以直接从每台计算机内部查找计算机的 IP,也可以使用标准工具(如 )nmap,或者通过向路由器询问 DHCP 客户端列表来查找计算机的 IP。最后,如果您知道它们的 IP 地址但不知道它们的 BIOS 名称,则可以使用 nmbd 将名称与 IP 地址关联起来:

 nmblookup -A IP_address
Run Code Online (Sandbox Code Playgroud)

顺便说一句,这种易于访问的方式(使您的虚拟机与 LAN 电脑处于同一水平)是我总是使用桥接接口的原因之一。