场景:最近在做数据仓库的作业,需要团队协作,买不起阿里云服务器,所以想到能不能将我本地机上的虚拟机变成服务器,供其它同学的电脑访问。在虚拟机上安装hadoop和hive,然后同学机子上安装kettle进行连接。最后发现是可以的。
本文介绍如何将本地虚拟机变成服务器,供其它电脑访问。
假设现在有电脑A和电脑B,虚拟机安装在电脑A上,现在电脑B想访问电脑A上的虚拟机。
首先要保证2点:
1.两台电脑要在同一个网段下:比如同一个wifi,手机热点,或者校园网下。
2.两台电脑要开放端口(如果嫌麻烦直接关闭防火墙即可)。
一、修改虚拟机的设置
1.首先打开虚拟机设置确保网络适配器为NAT:


2.然后选择编辑选项卡,点击虚拟网络编辑器

点击右下角更改设置:

选中NAT模式的这条栏目,然后点击右下角NAT设置:

点击添加,出现映射传入端口的弹窗:

我这里详细讲解一下这些参数:
主机端口:填写的是虚拟机所在的本地机的端口,这里可以随便填,比如2021、2024等等只要没被其它占用即可(不然会导致冲突)。
虚拟机的IP地址:这里通过ifconfig来查看虚拟机的ip地址,填的是虚拟机的ip地址。

虚拟机端口:默认是22,填22即可。
二、两台电脑ping通
假如我是用校园wifi连接的。

查看本地机(虚拟机所在的本地物理机,即电脑A)的所连网络(比如校园网wifi)的ip地址:

查看远端机(即想要使用电脑A中虚拟机的电脑B)的所连网络(比如校园网wifi)的ip地址:

学过计算机网络的人都知道,如果2台电脑同时连接校园网,那么它们的网段是相同的,比如以ipv4为例:两台电脑中显示的校园wifi同样是以192.168.191为前缀。
但是它们最后一个点后的数字是不同的,比如:电脑A为172,电脑B为47,最后这几位数字是用于区分同一网段下不同主机的。
这样一来电脑A连接校园网的ip是192.168.191.172,电脑B连接校园网的ip是192.168.191.47。
然后尝试一下两台电脑间能否ping通。
在电脑A中打开cmd,输入ping 电脑B所连网络的ip。
ping 192.168.191.47。

在电脑B中打开cmd,输入ping 电脑A所连网络的ip。
输入ping 192.168.191.172。

两台电脑能够互相ping通。
三、电脑B连接使用电脑A中虚拟机
最后通过xterm或者ssh随便啥连接终端都可以,比如我是电脑B,我现在想要去连接电脑A的虚拟机。现在要注意了,下面这句话很重要:
在主机地址里填写的是电脑A的连接校园网的ip,注意了不是网卡ip,也不是虚拟机的ip,一定是电脑A本地物理机所连网络的ip。

然后端口填写的是我们在"映射传入端口"中输入输入的主机端口,这里也要注意了一定不能填写虚拟机的端口22,否则是错误的。
这样我们就能够在电脑B上连接电脑A中的虚拟机了。

四、总结
所以当你在电脑A的虚拟机上下载了某些软件之后,假如你想让你的小伙伴能连接上虚拟机,当作服务器来使用里面的软件,一起来分工协作。
你就可以让你的小伙伴通过【虚拟机所在本地物理机所连网络的ip+设置的端口号】来访问虚拟机中的内容了,很方便吧。