我有 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]:
- Vagrant 虚拟机集群Jesse - jessesnet 2014-04-22。检索于 2015-02-26
答案2
我刚刚在复杂的多 CentOS (BoxCutter 6.9) VM Vagrant 设置中修复了这个问题。这个问题有两个层次,我的问题是 2:
正确获取您的 Vagrant 配置,以便您拥有“private_network”,并且所有 VM 的 IP 地址都在同一个子网中(静态或 DHCP): https://www.vagrantup.com/docs/networking/private_network.html
在虚拟机之间使用 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 处于同一水平)是我总是使用桥接接口的原因之一。