在Virtualbox中虚拟安装了Linux服务器,Linux服务器提供Web服务。物理主机没有链接路由器或交换机等设备。现有以下需求:html
在物理主机Windows系统里经过SSH链接Linux服务器。web
可访问Linux提供的Web服务。服务器
在Windows下使用Virtualbox虚拟出一台Linux虚拟机,通常状况下,将Linux虚拟机的网络方式设置为桥接模式,这样Linux虚拟机就至关于独立与PC并行存在,两个系统处于同一局域网,能够相互ping通。可是前提是当前PC链接在路由器或者交换机。若是没有路由器或者交换机等设备使两个系统处于同一局域网,这两个系统就没办法简单地ping通了。网络
既然目前Linux虚拟机不能使用桥接模式,那就设置成NAT模式(网络地址转换NAT)了吧。NAT模式即虚拟机的网络是彻底依赖于物理主机的的网络。在这种模式下,两个系统并非处理同一局域网,不能简单地直接ping通。可是Virtualbox能够设置在NAT模式下的端口转发规则,经过设置规则使PC能够链接上Virtualbox里的虚拟机。ssh
打开Virtualbox,右击Linux虚拟机,选择设置选项。在设备面板中,选择网络
,网卡1链接方式为网络地址转换NAT
,点击高级
,显示高级设置,以下图:tcp
点击端口转发
按钮打开端口转发规则列表,能够添加或删除规则。spa
规则中一些术语的解释:.net
主机:物理主机系统。命令行
子系统:Virtualbox虚拟出来的系统。code
主机端口:物理主机系统的端口,将此端口转发到子系统端口。
子系统端口:虚拟机子系统的端口。
下面以添加SSH链接规则为例。
点击右边的绿色加号按钮,规则列表中就会添加一条规则。更改其名称为ssh
(这个名称能够随便写的)。协议选择TCP
。主机IP
和子系统IP
留空不用填写。主机端口
填写2222
,也能够更改成其它端口,只要不与其它端口冲突便可,物理主机SSH链接虚拟机时将使用此端口。子系统端口
填写22
,由于SSH链接默认是使用22端口的,因此这个是不能随意填写的,例如最经常使用的像http协议的话默认是80端口,而ftp协议默认是21端口。填写完毕,点击肯定
按钮保存设置。
打开Linux虚拟机,安装SSH服务并开启,关闭防火墙。在物理主机Windows系统里就可使用Putty或者SecureCRT等软件链接Linux虚拟机了,SSH地址写localhost
或127.0.0.1
,端口填写刚才在Virtualbox设置端口转发规则中的主机端口
,上例中是使用了2222
。若是没有链接成功,请检查Linux虚拟机是否已经安装并开启SSH服务,并要关闭防火墙。
我在Linux虚拟机里安装了Apache和VSFTP,设置Virtualbox端口转发规则以下图所示。在物理主机Windows中,经过localhost:8008
或127.0.0.1:8008
能够访问web网页,经过localhost:2121
或127.0.0.1:2121
能够链接FTP。
上面说的是直接在图形化界面设置端口转发规则的,还有一种是使用命令设置的。
打开CMD,定位到你的 VirtualBox 安装目录,例如 “C:\Program Files\Oracle\VirtualBox”。例如个人Linux虚拟机在Virtualbox中的名称为Ubuntu
,要添加上例中SSH端口转发规则,则输入以下命令:
1 |
VBoxManage modifyvm "Ubuntu" --natpf1 "ssh,tcp,,2222,,22" |
此命令解析以下:
1 |
VBoxManage modifyvm "Linux虚拟机名称" --natpf1 "规则名称,协议,主机IP,主机端口,子系统IP,子系统端口" |