要让本地电脑访问并连接到VirtualBox虚拟机系统,最直接的办法是配置NAT端口转发或改用桥接网络模式,然后通过SSH、RDP等协议建立连接。本文将从网络模式选择、具体配置步骤到常见排错,一步步带你搞定这件事。
VirtualBox虚拟机怎么连接宿主机?先搞懂三种网络模式
很多人在VirtualBox里装好系统后,发现宿主机访问不到虚拟机,根源往往在于网络模式选错了,VirtualBox提供了多种网络模式,但日常用得最多的是以下三种。
NAT模式:默认选择,虚拟机上网没问题,但宿主机访问受限
NAT模式下,虚拟机通过宿主机共享IP地址访问外网,能正常上网,但外部设备(包括宿主机)主动连接虚拟机时会碰壁,如果你只是想让虚拟机上网,NAT够用;但如果要从宿主机SSH进虚拟机,或者访问虚拟机里的Web服务,就需要额外配置端口转发。
桥接模式:虚拟机拥有局域网独立IP,宿主机访问最省心
桥接模式相当于把虚拟机直接接入你家的局域网,它会从路由器获取一个独立的IP地址,这样一来,宿主机和虚拟机就像两台普通电脑一样互相访问,不需要任何额外配置。这也是业内专家推荐用于开发测试场景的方案,因为网络行为最接近真实物理机。
仅主机模式:宿主机与虚拟机私密互联,不对外网开放
仅主机模式创建一个虚拟私有网络,只有宿主机和加入该网络的虚拟机可以互通,虚拟机无法访问外网,适合做隔离测试或不想暴露虚拟机的场景。
| 网络模式 | 虚拟机上网 | 宿主机访问虚拟机 | 配置难度 |
|---|---|---|---|
| NAT | ✅ 可以 | ❌ 需端口转发 | 中等 |
| 桥接 | ✅ 可以 | ✅ 直接访问 | 简单 |
| 仅主机 | ❌ 不行 | ✅ 直接访问 | 简单 |
宿主机访问虚拟机端口:NAT端口转发详细步骤
如果你不想改动虚拟机的网络模式,保留NAT同时实现宿主机连接,端口转发是最佳路径,下面以Windows宿主机访问Ubuntu虚拟机为例,给出完整操作过程。
第一步:确认虚拟机IP和SSH服务状态
先在虚拟机里打开终端,输入 ip addr 查看当前IP地址,然后确认SSH服务已安装并启动:
sudo apt update && sudo apt install openssh-server -y sudo systemctl status ssh
看到 active (running) 就说明SSH服务正常,记住虚拟机的IP地址,后面配置端口转发时要用到。
第二步:配置VirtualBox端口转发规则
在VirtualBox主界面选中目标虚拟机,依次点击 设置 → 网络 → 高级 → 端口转发,弹出窗口后点击右上角的绿色加号添加规则,需要填四项内容:
- 名称:随意,
ssh-forward - 协议:TCP
- 主机IP:留空或填
0.0.1 - 主机端口:2222(本地未被占用的任意端口)
- 子系统IP:填写刚才查到的虚拟机IP,
0.2.15 - 子系统端口:22(SSH默认端口)
保存后,宿主机终端执行 ssh 用户名@127.0.0.1 -p 2222,就能通过宿主机端口访问到虚拟机的SSH服务了。
第三步:用命令行管理端口转发(备用方案)
如果你更习惯命令行操作,VirtualBox也提供了对应指令,先关闭虚拟机,然后在宿主机终端执行:
VBoxManage modifyvm "你的虚拟机名称" --natpf1 "ssh,tcp,127.0.0.1,2222,,22"
这条命令同样实现了宿主机2222端口到虚拟机22端口的转发,删除规则时使用:
VBoxManage modifyvm "你的虚拟机名称" --natpf1 delete "ssh"
VirtualBox桥接模式设置:让虚拟机获得局域网IP
如果不想折腾端口转发,直接切换到桥接模式通常更省事,行业共识认为,对于需要频繁互传文件、调试接口的场景,桥接模式体验远优于NAT加端口转发。
切换网络模式的操作路径
在VirtualBox主界面选中虚拟机,点击 设置 → 网络,将“连接方式”从NAT改为 桥接网卡,名称选择你宿主机正在使用的物理网卡(Windows下通常是“Realtek PCIe GbE Family Controller”或“Intel I211 Gigabit Network Connection”,笔记本无线连接则选择Wi-Fi对应的网卡)。
启动虚拟机后,在虚拟机内执行 ip addr 查看新的IP地址,正常情况下,你会看到一个与宿主机同一网段的IP,比如宿主机是 168.1.100,虚拟机可能是 168.1.101。
宿主机直接连接虚拟机
拿到虚拟机IP后,宿主机执行以下命令即可直接连接:
ssh 用户名@192.168.1.101
无需指定端口,因为此时虚拟机使用标准的22端口,如果你用的是Windows虚拟机,则通过远程桌面连接(RDP)访问,在宿主机搜索框输入 mstsc,然后填上虚拟机IP和账号密码。
本地电脑远程连接虚拟机的两种常用方式
除了SSH连接Linux虚拟机,还有几种常见的“本地电脑访问vbox虚拟机”场景,这里一并梳理清楚。
访问虚拟机里的Web服务
假设你在虚拟机里用Docker跑了一个Nginx容器,端口映射到了虚拟机的8080端口,无论使用哪种网络模式,宿主机访问方式如下:
- 桥接模式:直接在浏览器输入
http://虚拟机IP:8080 - NAT模式:需要添加一条端口转发规则,主机端口设为8080,子系统端口设为8080,然后浏览器访问
http://127.0.0.1:8080
通过SFTP传输文件
使用FileZilla或WinSCP这类工具,连接信息与SSH保持一致,桥接模式下填虚拟机IP,NAT模式下填 0.0.1 加自定义端口,推荐使用SFTP协议而非FTP,因为SFTP走SSH通道,安全性更高且无需额外配置FTP服务端。
图形界面远程桌面(针对Windows虚拟机)
Windows虚拟机开启远程桌面功能后,在宿主机按 Win+R 输入 mstsc 打开远程桌面连接,填入虚拟机IP(桥接模式)或 0.0.1:3389(NAT模式加端口转发),即可像操作本地电脑一样操作虚拟机。
连接失败排查指南
配置完成后如果依然连不上,按以下顺序逐项排查,多数情况下能定位问题。
- 检查虚拟机防火墙:Ubuntu执行
sudo ufw status,若为active则执行sudo ufw allow 22/tcp放行SSH端口,Windows虚拟机则检查“Windows Defender防火墙”中是否允许“远程桌面”应用通过。 - 确认VirtualBox网络设置生效:修改网络模式或端口转发后,必须重启虚拟机才能生效,部分情况下还需在宿主机执行
ipconfig /flushdns刷新DNS缓存。 - 验证端口监听状态:在宿主机执行
netstat -ano | findstr 2222,如果看不到监听记录,说明端口转发规则未正确加载。 - Ping测网络连通性:桥接模式下,宿主机ping虚拟机IP,虚拟机ping宿主机IP,哪边不通就排查哪边的防火墙或网卡绑定设置。
- 查看VirtualBox日志:在主界面选中虚拟机,点击 视图 → 显示日志,搜索
natpf或hostif关键词,可以看到网络配置的加载情况。
Q&A:VirtualBox虚拟机连接常见问题
VirtualBox默认NAT模式下为什么ping不通虚拟机?
NAT模式下,虚拟机位于VirtualBox创建的私有网络中,宿主机无法直接路由到该网段,Ping使用的是ICMP协议,而端口转发仅支持TCP/UDP,因此即使配置了端口转发也无法ping通,解决方案是改用桥接模式,或将ICMP流量通过其他隧道工具转发。
vbox虚拟机怎么设置端口转发?
在VirtualBox主界面选中虚拟机,进入 设置 → 网络 → 高级 → 端口转发,添加规则时填写协议、主机端口、子系统IP和子系统端口,例如宿主机访问虚拟机SSH,主机端口填2222,子系统端口填22,保存后重启虚拟机,通过 ssh 用户名@127.0.0.1 -p 2222 即可连接。
宿主机如何访问虚拟机里的Web服务?
先确认Web服务监听在虚拟机的哪个端口,然后在VirtualBox端口转发中添加对应规则,将宿主机某个空闲端口映射到该端口,以NAT模式为例,虚拟机内Nginx监听80端口,宿主机端口转发规则设置主机端口8080、子系统端口80,浏览器访问 http://127.0.0.1:8080 即可看到页面,桥接模式下则直接访问 http://虚拟机IP:80,无需额外配置。