我对SSH和Vagrant完全不熟悉所以这可能是一个非常棒的问题..
我试图通过定义我的服务器来连接到vagrant上的私有IP地址,如下所示:
config.vm.define "server" do |server|
server.vm.network "private_network", ip: "192.168.1.10"
server.vm.network :forwarded_port, guest: 3000, host: 3000
server.vm.synced_folder "./sync_folder", "/vagrant"
end
之后,做了所有流浪汉的命令和一切。
但是当我在命令行输入vagrant ssh-config时..
Host server
HostName 127.0.0.1
User ubuntu
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /Users/xxxx
IdentitiesOnly yes
LogLevel FATAL
它返回的是本地IP地址,而不是我想要的私有IP地址。我不明白为什么......
答案 0 :(得分:2)
这就是vagrant的工作方式,实际上它会创建多个网络接口,因此您不一定会看到主机上的预期接口。
如果查看vagrant up
命令的输出,您将看到以下内容
...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
...
如此清楚地进入VM,它使用端口22上的环回地址。
如果你去VM并查看网络接口
enp0s3 Link encap:Ethernet HWaddr 02:58:f3:11:f2:f2
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::58:f3ff:fe11:f2f2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:22381 errors:0 dropped:0 overruns:0 frame:0
TX packets:10950 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:17387008 (17.3 MB) TX bytes:690514 (690.5 KB)
enp0s8 Link encap:Ethernet HWaddr 08:00:27:1f:f8:27
inet addr:192.168.33.10 Bcast:192.168.33.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe1f:f827/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:522 (522.0 B) TX bytes:648 (648.0 B)
第一个接口是NAT,这是一个用于在主机和VM之间进行通信(ssh)的流浪者,所以这个接口与给定端口上的主机的环回绑定(默认情况下这是22但是如果你有多个VM运行,vagrant将定义另一个端口)
第二个界面是您从Vagrantfile设置的界面,并且已分配IP。
你可能会说vagrant ssh-config
没有显示所有的网络接口属性,但实际上这只是关于ssh属性,这样输出是正确的。如果要获取网络属性,则需要查看VM
PS:最后注意,如果您为VM分配私有IP,则无需转发端口,因为您将使用其IP直接访问VM。