SSH链接使用NAT模式的Virtualbox虚拟机

需求

在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

网络地址转换NAT高级设置

点击端口转发按钮打开端口转发规则列表,能够添加或删除规则。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地址写localhost127.0.0.1,端口填写刚才在Virtualbox设置端口转发规则中的主机端口,上例中是使用了2222。若是没有链接成功,请检查Linux虚拟机是否已经安装并开启SSH服务,并要关闭防火墙。

我在Linux虚拟机里安装了Apache和VSFTP,设置Virtualbox端口转发规则以下图所示。在物理主机Windows中,经过localhost:8008127.0.0.1:8008能够访问web网页,经过localhost:2121127.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,子系统端口"

参考

相关文章
相关标签/搜索