不使用'vagrant ssh'命令如何通过ssh连接到Vagrant虚拟机?

7

我使用Vagrant创建了一个新的虚拟机盒子。

vagrant init ubuntu/trusty64
vagrant up

我想要通过ssh登录到这个虚拟机而不使用"vagrant ssh"命令。

在虚拟机中运行ifconfig命令,可以得到以下信息:

eth0      Link encap:Ethernet  HWaddr 08:00:27:ca:3e:f9
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:feca:3ef9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:254 errors:0 dropped:0 overruns:0 frame:0
          TX packets:187 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:26220 (26.2 KB)  TX bytes:22208 (22.2 KB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

我尝试过

ssh vagrant@10.0.2.15

盒子上的“who”提供了

vagrant  pts/0        Jan  5 14:46 (10.0.2.2)

所以我尝试了一下

ssh vagrant@10.0.2.2

但是都不起作用!

这些IP地址上的ping命令都无效。

3个回答

5

首先,您无法访问位于NAT网关后面的IP地址。您需要使用NAT网关的IP地址和转发的端口来访问服务器,默认情况下vagrant中ssh的端口是2222。您还需要告诉ssh它应该使用vagrant的不安全私钥:

ssh -i ~/.vagrant.d/insecure_private_key -p 2222 vagrant@localhost

vagrant ssh命令旨在隐藏这种复杂性。

如果您同时启动了多个vagrant盒子,或者您明确选择了一个不同于2222的端口,则需要使用实际使用的端口。您可以使用以下方法找到它:

vagrant ssh-config

你可以通过运行 vagrant ssh-config 命令获取端口号,如果你有其他虚拟机正在运行,Vagrant 将会关联一个不同的端口。 - Frederic Henri
@FrédéricHenri,我已经详细说明了,并添加了vagrant ssh-config。谢谢! - hek2mgl
你可以通过以下命令获取映射到客户机SSH端口(22)的主机端口:vagrant port --guest 22。因此,你可以使用以下更通用的命令:ssh -i ~/.vagrant.d/insecure_private_key -p $(vagrant port --guest 22) vagrant@localhost - Ates Goral
1
@AtesGoral 似乎是一个新功能。我有vagrant-1.7.4,它没有vagrant port命令。 - hek2mgl

1
我发现了解决方案。
在Vagrantfile文件中,
取消注释这一行。
config.vm.network :private_network, ip: "192.168.33.10"

然后您可以使用ssh进行连接。
ssh vagrant@192.168.33.10

1
嗯,这是一个解决方案,但是针对不同的问题。根据您最初的Vagrantfile,@hek2mgl的解决方案是正确的。 - Frederic Henri

1

要永久创建主机别名,您可以将以下条目添加到您的~/.ssh/config中:

Host my-vagrant-box
     User vagrant
     HostName localhost
     Port 2222
     IdentityFile /Users/atesgoral/Sandbox/my-vagrant-box/.vagrant/machines/default/virtualbox/private_key
     IdentitiesOnly yes

然后您只需要执行:

ssh my-vagrant-box

要确定映射到客户机(Vagrant box)SSH端口的主机端口,请执行以下操作:
vagrant port --guest 22

在这个仓库中, 你可以找到一个shell脚本,你可以在包含Vagrantfile的目录中运行它。它会生成一个主机条目,可以追加到~/.ssh/config文件中:

./ssh-config.sh >> ~/.ssh/config

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接