如何在 Vagrant 客户虚拟机集群之间进行 ssh

如何在 Vagrant 客户虚拟机集群之间进行 ssh

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

答案1

在 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

启动这两台机器后,您可以先通过名称 ssh 进入其中一台机器

vagrant ssh master

并且从此会话中你可以通过私有网络 IP ssh 到另一台机器:

ssh 10.0.0.201

当提示输入用户/密码时,您可以作为vagrant/进行身份验证vagrant,或者进一步为自己配置 ssh。


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

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

答案2

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

  1. 正确获取您的 Vagrant 配置,以便您拥有“private_network”,并且所有 VM 的 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它不会断开任何会话,因为它很聪明)。

答案3

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

 ssh myname@ip_of_vm_2

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

 nmblookup -A IP_address

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

相关内容