转:主机访问VirtualBox虚拟机服务

本文介绍如何在Ubuntu环境下通过设置端口映射访问VirtualBox中安装的Windows系统的web服务,实现方便快捷的服务器调试。
本文提供了一个简单而实用的技巧: 怎样在Ubuntu环境中(主机)访问VirtualBox安装的windows系统(虚拟机)中的服务。

正文

使用虚拟机常常是为了调试服务器,因为在桌面系统安装服务程序,一来容易有安全问题,更重要是容易拖慢系统。

VirtualBox作为一款轻快的开源虚拟机软件,自从被Sun公司收购后,更新相当频繁,功能也逐渐完善,比起VMware动辄几百M的安装文件,VirtualBox几十M的身材而功能丝毫不在VMware之下,而且性能远远高出VMware。

如果把虚拟机作为服务器调试工具,VM默认是使用桥接方式连接虚拟机和主机,安装完后虚拟机直接对主机可见,调试很方便,但是VBox则默认是NAT方式,主机完全访问不了虚拟机。

除了设置VBox为桥接方式外(有点麻烦),另一更加简捷的方式是给虚拟机开端口。这和使用家用路由器映射端口原理是一样的,经过路由器后,局域网内的机器对公网外是不可见的,但是通过添加端口映射,公网就可以访问到内网的机器。

VirtualBox 的User Manual(2.1.4版)在6.4.1介绍了这个方法:使用VBox自带的VBoxManage工具设置端口映射。下面是介绍一个例子:

主机:Ubuntu 8.10
虚拟机:Win XP + phpStudy 套件(Apache、MySQL….),Apache在81端口提供服务。

配置后通过主机的8080访问虚拟机:localhost:8080。

在虚拟机关机情况下,在主机终端执行:

VBoxManage setextradata “xp” “VBoxInternal/Devices/pcnet/0/LUN#0/Config/web/Protocol” TCP

VBoxManage setextradata “xp” “VBoxInternal/Devices/pcnet/0/LUN#0/Config/web/GuestPort” 81

VBoxManage setextradata “xp” “VBoxInternal/Devices/pcnet/0/LUN#0/Config/web/HostPort” 8080


VBoxManage是VirtualBox的配置工具,setextradata只是其中一个方法。”xp”是虚拟机的名称,而”VBoxInternal/Devices/pcnet/0/LUN#0/Config/web/…”是该虚拟机的一个属性,其中/web/是可以任意设置的名称。如果虚拟机用的虚拟网卡不是默认的PCNet,而是用了Intel PRO/1000,则需把路径中的“pcnet”替换为“e1000”,同样地,如果你为虚拟机配置了n个网卡,则要把/0/换成相应的序列。

重新运行虚拟机,在Host的浏览器里敲入http://localhost:8080/phpinfo.php,虚拟机里面的php环境显示出来了。注意此时对主机网络内的其他机器,也可以通过本机的8080端口访问到虚拟机的web服务(当然,前提是主机的防火墙没有拦截该端口)。不过无法为主机小于1024端口进行映射(设了之后虚拟机启动报错),这涉及到Unix/Linux的保护措施,可能在root账户下可用。有兴趣的在Windows 平台试试,可能没此限制。

注意在虚拟机运行的时候这样配置是无效的,必须重新启动一次,休眠(save state)了再开也可以。

如果想删除这些映射,同样执行以上的命令,而把最后的命令值留空即可,如:

VBoxManage setextradata “xp” “VBoxInternal/Devices/pcnet/0/LUN#0/Config/web/Protocol”


VBoxManage工具是VirtualBox自带的配置工具,不论是Linux、Mac还是Windows平台下,都有这个工具,使用方法都是一样的。
<think>好的,我需要帮助用户了解如何从宿主机访问VirtualBox虚拟机中的文件。首先,我应该整理用户提供的引用内容,看看有哪些相关的步骤和注意事项。 引用[1]提到在Windows 10主机安装Ubuntu 18.04时设置文件共享和root登录,说明用户可能是在Windows宿主机上运行Ubuntu虚拟机。引用[2]和[3]讨论了共享文件夹的设置和自动挂载的问题,特别是提到在/etc/fstab中的常见错误以及解决方法。引用[4]提到了权限问题,需要将用户添加到vboxsf组,这可能是一个关键点。引用[5]则涉及安装VirtualBox增强功能,这也是设置共享文件夹的前提。 首先,我应该按照逻辑步骤来组织答案:安装增强功能、配置共享文件夹、挂载共享文件夹、设置自动挂载、处理权限问题。每个步骤都需要详细说明,同时引用相关的引用内容来支持。 安装增强功能是基础,必须确保虚拟机安装了Guest Additions,否则共享文件夹功能无法使用。然后,在VirtualBox管理器中配置共享文件夹,指定路径和名称。接下来是在虚拟机内挂载,可能需要手动挂载或者设置自动挂载。自动挂载部分需要注意引用[3]中提到的问题,即不能在/etc/fstab直接添加,而应该使用systemd服务或者脚本延迟挂载。 权限方面,用户可能需要将自己加入vboxsf组,如引用[4]所述,使用sudo usermod命令并重启。这一步很重要,否则即使挂载了也无法访问。 此外,需要注意不同操作系统的路径差异,比如WindowsLinux的目录结构。可能还需要提醒用户检查共享文件夹的名称和挂载点是否一致,避免错误。 最后,总结常见问题,比如挂载失败、权限不足等,并给出解决方法,引用相关的引用来源。同时,生成相关问题,帮助用户进一步了解优化和应用场景。</think>[系统级指令响应] ### 宿主机访问VirtualBox虚拟机文件的配置教程 #### 方法1:共享文件夹配置(推荐) 1. **安装增强功能** 虚拟机启动后,在VirtualBox菜单栏选择「设备」→「安装增强功能」,挂载虚拟光驱并执行安装命令(需虚拟机系统权限)[^5]。 2. **设置共享文件夹** - 关闭虚拟机,在VirtualBox管理器中选择虚拟机设置→「共享文件夹」 - 添加共享文件夹路径(宿主机目录),指定「文件夹名称」(如`VMShare`),勾选「自动挂载」和「固定分配」[^1] 3. **挂载与访问** 启动虚拟机后,共享文件夹默认挂载在以下路径: - **Linux虚拟机**:`/media/sf_<文件夹名称>` - **Windows虚拟机**:`\\VBOXSVR\<文件夹名称>` 需执行命令将用户加入`vboxsf`组: ```bash sudo usermod -aG vboxsf $(whoami) # 权限问题解决方案[^4] ``` 重启后即可通过文件管理器访问共享目录[^2]。 #### 方法2:手动挂载(适用于高级需求) ```bash sudo mount -t vboxsf <共享文件夹名称> <虚拟机挂载路径> # 示例:sudo mount -t vboxsf VMShare /mnt/hgfs/VMShare ``` #### 自动挂载配置(解决开机挂载失败问题) 通过创建systemd服务实现延迟挂载(避免因模块未加载导致的失败[^3]): 1. 创建服务文件 `/etc/systemd/system/mnt-hgfs.mount`: ```ini [Unit] Description=VirtualBox Shared Folder Requires=vboxadd-service.service After=vboxadd-service.service [Mount] What=VMShare Where=/mnt/hgfs/VMShare Type=vboxsf [Install] WantedBy=multi-user.target ``` 2. 启用服务: ```bash sudo systemctl enable mnt-hgfs.mount ``` #### 关键问题总结 | 问题现象 | 解决方案 | 引用来源 | |-----------------------|-------------------------------------|----------| | 共享文件夹无访问权限 | 执行`sudo usermod -aG vboxsf $USER` | [^4] | | 开机自动挂载失败 | 使用systemd服务延迟挂载 | | | 增强功能安装失败 | 检查虚拟机内核头文件是否匹配 | |
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值