1. 项目概述:一台物理机“分身”出多台电脑
虚拟机这东西,你只要体验过一次就会明白,它就像是在你的Windows电脑里,通过软件“变”出另一台完整独立的电脑。你可以在这台虚拟电脑里随便装系统、跑软件、做实验,弄坏了也不影响宿主机,直接删掉重来。很多开发者、运维人员、安全测试工程师,甚至是普通办公用户,都用它来隔离环境和跑跨平台系统。
这篇文章要解决的核心问题很直接:怎么把虚拟机从零装好,并且成功实现远程登陆。这里说的远程登录,不是那种复杂的跨公网远程,而是指在日常使用中,怎么从宿主机(你正在用的这台电脑)或局域网内其他设备,像操作一台真机一样去操作虚拟机。这涉及到两个关键环节:一是虚拟机软件与客户机系统的安装,二是网络配置与远程连接方案的选择。
最适合看这篇文章的人是:刚接触虚拟机的学生、需要用Linux做开发但不想装双系统的程序员、想本地搭一套测试环境的运维新手,以及任何想在Windows上用虚拟机折腾各种系统的好奇心玩家。你会学到的不仅是“下一步下一步”的安装向导,还包括为什么这么选、出问题怎么排查,这些才是真正值钱的经验。
我以当前最常见的组合为例——宿主机Windows 10/11,虚拟机软件VMware Workstation,虚拟机里装Ubuntu Linux——把这个流程从头到尾讲透。这套思路换到VirtualBox、换到Windows Server或CentOS,逻辑完全通用。
2. 安装前的准备:选对软件版本与宿主机环境
在很多人的想象里,装虚拟机就是下载一个软件点几下就完了,真正操作起来你会发现,前面的准备和选型决定了后面80%的体验。这一章把准备工作做扎实,后面基本就是行云流水。
2.1 虚拟机软件怎么选:VMware、VirtualBox还是Hyper-V
先说说三款主流方案的取舍,因为热词里大量出现“vmware虚拟机安装教程”“virtualbox安装linux虚拟机”,说明大家在这几个名字之间犹豫过。
- VMware Workstation Pro:市场份额最大、功能最完善、对新手最友好的商业软件。对个人用户现在免费,功能像快照、克隆、共享文件夹、USB透传、3D加速都非常稳定。资源占用略高,但换来的是稳定性和兼容性,尤其是对Windows客户机的优化,明显比别的方案好。这也是我下面所有步骤用的软件。
- Oracle VirtualBox:开源免费,跨平台,轻量。功能上该有的都有,但它对某些系统(尤其是高版本Windows)的驱动兼容性偶尔会有小毛病,UI交互也有些年代感。优点是免费且资源占用低,用在老电脑上是加分项。
- Hyper-V:Windows自带的企业级虚拟化平台,性能强悍、稳定性高,但它的管理方式和传统虚拟机软件差别很大,虚拟机里跑桌面系统时3D性能和USB兼容性反而一般,对小白不算友好。它更适合服务端场景,或者你本来就在用Windows Server。
选择逻辑很简单:追求省心、要跑桌面级系统、希望教程多容易排障,选VMware;机器配置低或不想装商业软件,选VirtualBox;你在服务端环境或深度使用微软生态,才考虑Hyper-V。后面的内容我都以VMware Workstation Pro来写。
2.2 宿主机环境检查:虚拟化开关与磁盘空间
安装VMware本身没什么好说的,下一步下一步即可,但有几个前置条件必须确认,否则后面会反复踩坑。
首先是BIOS/UEFI里的硬件虚拟化开关。X86处理器在硬件层面提供了虚拟化指令集(Intel叫VT-x,AMD叫SVM),VMware默认会调用来加速虚拟机运行。如果这个开关没开,VMware装完之后新建虚拟机会直接提示“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”。这时候你需要重启电脑,进BIOS,在CPU或Advanced相关菜单里找到Intel Virtualization Technology或SVM Mode,改成Enabled。
怎么确认自己电脑开关是否开启?在Windows任务管理器里选“性能”标签页,看右下角的“虚拟化”一栏,显示“已启用”就说明没问题。这个检查比什么都快,也别着急去装什么第三方检测工具。
其次是内存和磁盘空间。虚拟机是实打实瓜分物理资源。我给一个参考值:宿主机至少8GB内存,16GB比较舒服;磁盘剩余空间至少50GB(虚拟机硬盘文件会占用这个空间)。如果你要跑Windows虚拟机,建议预留80GB以上,不然C盘空间很快告急。
提示:别在C盘快满的情况下装虚拟机,虚拟磁盘文件是会持续膨胀的,特别是Windows客户机,越用越大,最后影响宿主机性能甚至蓝屏。
2.3 下载安装与镜像准备:版本别贪新
软件下载尽量去官网。VMware Workstation Pro现在是Broadcom旗下,官网需要注册账号才能下载,嫌麻烦的可以去一些知名的软件站下载,但注意核对文件哈希值,避免下载到被篡改的安装包。版本选择上,17.x系列在UI和性能上比16.x有明显提升,如果你的硬件不算太老,直接上17;老CPU还跑16也行,差异主要在虚拟硬件版本上,不致命。
同时要准备的还有操作系统镜像ISO。Ubuntu桌面端去官网下载LTS长期支持版,目前常见的是22.04和24.04;Windows虚拟机的话需要准备好Windows ISO镜像文件。注意区分架构:普通的PC用x86_64版本。
软件装好后,建议启动一次并输入个人使用许可证或注册免费许可证(VMware Workstation Pro对个人用户免费)。然后就可以进入下一步创建虚拟机了。官方要求的最低窗口期,就是帮你把“能装系统”变成“装好系统能用”,这一步做扎实了,后面远程登录的坑能少一半。
3. 虚拟机创建与系统安装:从空白到能开机
这一步是很多人点“下一步”最顺手、但也最容易配置出问题的环节。VMware的向导看似简单,每个选项背后都对应了虚拟硬件参数,配置不对,后面卡顿、黑屏、网络不通都找上门。
3.1 新建虚拟机向导的核心选项:自定义是关键
打开VMware主界面,点击“创建新的虚拟机”。这里有两个入口,一个是“典型(推荐)”,一个是“自定义(高级)”。我强烈建议选择自定义,因为典型模式自动分配的很多参数并不合理,后面再去改反而麻烦。
整个向导里有几个关键决策点,逐一说明:
固件类型:如果你装的是现代64位系统(Win10/11、Ubuntu 22.04+),选UEFI。UEFI支持安全启动、启动速度更快。如果遇到老系统或特殊Ghost镜像,才需要选Legacy BIOS(传统BIOS),这是一个后面遇到启动问题时要优先想到的变量。
处理器和内存:处理器数量(Socket)保持1不变,核心数根据宿主机CPU的线程数来分配。比如你的CPU是8核16线程,给虚拟机分配2核4线程即可,给多了并不会让虚拟机更快,反而拖累宿主机的运行。内存分配,Ubuntu桌面版推荐4GB,Windows 10/11至少给4GB、推荐8GB,分多少可以根据宿主机内存总量来定,留足宿主机空间避免卡顿。
网络类型:这一项是重头戏,关系到远程登陆的方案选择,放到下一章专门讲。这里先记住默认的NAT模式是最省事的。
磁盘类型:新版VMware推荐NVMe就选NVMe,SCSI也行。差异在于Windows客户机的驱动兼容性,NVMe几乎都自带驱动,不用额外装,省事。磁盘容量至少给30GB(Ubuntu桌面够用),Windows建议给60GB以上。默认勾选“将虚拟磁盘拆分成多个文件”,这个选项方便你日后用VMware自带的工具合并、迁移、压缩虚拟磁盘,代价仅是文件多几个,几乎无感。
3.2 安装Ubuntu系统:分区策略与用户名避坑
向导完成之后,虚拟机就出现在左侧列表里。在“编辑虚拟机设置”里可以挂载ISO镜像:CD/DVD(SATA)一项选择“使用ISO映像文件”,浏览到你下载好的Ubuntu镜像。然后点击“开启此虚拟机”。
Ubuntu的安装流程图形化程度很高,一路Next。但有两个地方容易被忽视:
分区策略。新手选择“清除整个磁盘并安装Ubuntu”就可以,它会自动完成分区。但如果你打算长期使用并做开发,可以在“安装类型”里选“其他选项”手动分区:一个ext4格式挂载到“/”的根分区(建议30GB以上,最好给到全部磁盘),一个swap分区(大小等于物理内存即可,如果内存够了也可以不要swap),还可以留一个分区挂载到“/home”存放个人数据,方便以后重装系统不丢配置。实际来说,默认自动分区就能满足大多数人的需求,不用过度设计。
用户名和密码。强烈建议只设置一种密码,并设置一个“简单好记但不易被爆破”的密码,因为这关系到后面远程登陆SSH。如果在这里设了一个复杂得自己都记不住的密码,后面SSH登录就是一场灾难。Ubuntu在安装时会询问是否加密主目录,这个选项建议选“否”,加密主目录会在某些场景下导致权限问题,对刚接触虚拟机的用户来说是徒增麻烦。
安装完毕后重启,进入桌面环境,到这里虚拟机就已经“活”了。但这还没完,你需要装一个叫VMware Tools(新版本叫open-vm-tools)的增强组件,它负责三件关键的事情:鼠标在宿主机和虚拟机之间的无缝切换、剪贴板共享、拖拽文件,以及让虚拟机获得动态分辨率。Ubuntu桌面版装了之后,你可以直接运行,也可以让VMware自动把驱动装上。如果没有这个组件,你会发现鼠标一进虚拟机就被“锁住”,按Ctrl+Alt才能释放出来,分辨率也固定在800x600,体验非常差。
注意:安装完VMware Tools之后,重启虚拟机,再拍一个快照。快照相当于虚拟机的“存档”,以后系统搞坏了,几秒钟就能恢复到这个状态。快照按钮在工具栏上,或者菜单栏“虚拟机”->“快照”->“拍摄快照”。这个习惯能让你在后续实验中肆无忌惮,这是虚拟机最大的价值之一。
3.3 免安装:复制虚拟机文件而不是重新装
有一种快速获得系统和避免重复安装的技巧:在一台机器上装好系统后,把整个虚拟机目录打包拷贝到另一台电脑,用VMware“打开虚拟机”功能,选择里面的.vmx文件,就能直接启动,不需要重新安装系统。这是因为虚拟机把“整机”的内容都装进了几个文件里,系统版本的差别、驱动的差别几乎可以忽略,这种可迁移性是真机不具备的。
这个方法特别适合一个团队统一镜像环境,或者你个人在两台电脑之间同步开发环境。需要注意的坑是:迁移之后,如果网络不通,检查虚拟机网络适配器的MAC地址是否冲突(VMware拷贝时通常会生成新的MAC,但个别情况需要手动重置),这也是热词里出现“000c 29开头的mac地址都是虚拟机吗”的现实背景——是的,VMware生成的虚拟MAC默认以00:0c:29开头,以后你排查局域网设备时看到这个前缀,基本就是虚拟机或者各类虚拟交换机的设备。
4. 网络模式与远程登陆:那台虚拟电脑怎么被“找”到
虚拟机装好了,系统也起来了,但如果你只是坐在宿主机前面操作那个窗口,那根本谈不上“高效”。远程登陆的意义在于:你可以用自己最顺手的终端工具,以命令行的方式或图形界面的方式随时连接虚拟机,甚至可以一边在宿主机开浏览器查资料,一边在虚拟机里跑程序,互不干扰。这一步才是真正从“会用”走向“用好”的关键。而这一切的底层核心,就是网络。
4.1 三种网络模式的逻辑拆解:桥接、NAT与仅主机
创建虚拟机时你选择了网络类型,远程登陆就是从选对网络开始的。VMware里这三种模式,每种都对应不同的网络拓扑场景,搞清楚它们才能在远程登录时有的放矢。
桥接模式(Bridged)。虚拟机就像宿舍里新搬来的室友,直接插到了你们宿舍的同一个路由器上,和你的宿主机是平级关系。它和宿主机拥有同一个网段的IP,比如你的路由器是192.168.1.x网段,宿主机是192.168.1.5,虚拟机分配到192.168.1.6。局域网里其他真机可以直接访问虚拟机,虚拟机也可以直接访问局域网内其他设备,双向畅通。托管的开发测试环境、需要对外提供服务的场景,用桥接。
NAT模式(Network Address Translation)。虚拟机被藏在了宿主机后面,由宿主机代理它上网。对内:虚拟机可以访问外部网络(比如访问互联网、拉取更新);对外:其他设备不能直接看到虚拟机。在NAT模式下,宿主机有一个专门的虚拟网卡VMnet8,虚拟机在这个虚拟私有网络里有自己的IP(默认是192.168.x.x,由VMware自动分配),宿主机的VMnet8网卡IP就作为虚拟机的“网关”。我们要实现从宿主机远程登录虚拟机,NAT模式完全够用,因为它只是规定了“从外到内”的默认拒绝,而从内到外访问互联网没问题,宿主机自己访问VMnet8网段下的虚拟机IP也是直通的。它是最推荐新手的模式,因为不需要关心路由器设置,不占用局域网真实IP,安全隔离性也好,所以我下面讲的远程登陆方案默认基于NAT模式。
仅主机模式(Host-Only)。虚拟机只能跟宿主机通信,上不了外网。这个模式用于严格的隔离测试环境,或者搭建不依赖公网的内部实验网。
用一张表总结:
| 模式 | 虚拟机访问外网 | 宿主机访问虚拟机 | 局域网访问虚拟机 | 典型场景 |
|---|---|---|---|---|
| 桥接 | 可以 | 可以 | 可以 | 开发服务、对外暴露测试环境 |
| NAT | 可以 | 可以 | 默认不行(需端口转发) | 日常使用、SSH练习、普通开发 |
| 仅主机 | 不行 | 可以 | 不行 | 隔离测试、恶意代码分析 |
所以,如果你是跟着这篇教程来,选择NAT模式。这就是既能上网、又能被宿主机远程登录的平衡方案。
4.2 给虚拟机固定IP:动态分配IP会害了你
这是远程登录里很容易忽略的一步,也是热词里“vm虚拟机net模式可以配置固定ip吗”的直接答案:可以,而且非常建议配。
默认VMware NAT模式会给虚拟机分配动态IP。动态的IP在今天能用,重启后可能就变了,你SSH配置文件的IP就失效了,这非常烦人。解决方法是给虚拟机的网络接口配置静态IP。
在Ubuntu 22.04及之后版本,网络管理用的是Netplan工具,配置文件名通常是/etc/netplan/01-network-manager-all.yaml,内容是:
network: version: 2 ethernets: ens33: dhcp4: no addresses: - 192.168.163.130/24 routes: - to: default via: 192.168.163.2 nameservers: addresses: [192.168.163.2, 8.8.8.8]这里要解释几点:你的网卡名不一定是ens33,可能是ens160或者eth0,用ip a查看。192.168.163.130是我举的地址,具体网段取决于VMware的NAT网卡配置,打开VMware的“编辑”->“虚拟网络编辑器”,选中VMnet8那一行,就能看到子网IP和网关IP。via后面写的是网关IP,一般是子网IP的最后一位是2的那个地址(比如192.168.163.2)。nameservers里的第一个地址就是网关本身,因为VMware NAT模式自带一个DNS代理服务,填网关就可以完成域名解析。
改完后执行:
sudo netplan apply再执行ip a确认IP已经固定。这里有个注意点:如果你填写的IP和子网里其他设备冲突了,网络会不通,这时候换一个最后一位更大的数字,比如130、131这种,越靠后越不容易冲突。
4.3 从宿主机SSH到虚拟机:最通用的远程登录方式
先确认一件事:NAT模式下,宿主机可以ping通虚拟机IP、能直接访问虚拟机的22端口。如果ping不通,八成是虚拟机的防火墙开着。Ubuntu默认没有对外部ping有严格限制,但如果你装了ufw防火墙,就需要放行22端口。我在实际使用中一般在没把握时先临时关掉防火墙来定位问题:
sudo systemctl stop ufw sudo systemctl disable ufw确认能通之后,接下来在宿主机打开终端。Windows 10/11自带的OpenSSH客户端可以直接用,不需要安装额外软件。Windows的PowerShell或者CMD里执行:
ssh 用户名@虚拟机IP例如:
ssh chen@192.168.163.130第一次连接会提示确认指纹,输入yes回车,然后输入创建Ubuntu时设置的密码,回车就进入虚拟机的命令行界面了。到这里,你已经实现了“远程登陆虚拟机”的第一阶段——SSH命令行登录。这不是所有,但这是最基础、最稳定、最通用的方式,无论虚拟机上跑的是Ubuntu还是CentOS还是Debian,只要是Linux,就走这条道。
如果不想每次输密码,可以配置SSH密钥登录,把宿主机的公钥传到虚拟机:
ssh-copy-id 用户名@虚拟机IP输入密码后,下次登录就免密了。这算是远程登录里体验飞跃的那一下,强烈建议配。
4.4 远程桌面与文件互传:图形界面也能远程操作
如果你需要在虚拟机的图形界面里操作窗口程序,SSH就无能为力了。此时有几条路可以考虑。
XRDP一类的远程桌面:这是把Windows的RDP协议和Linux对接的方案。在Ubuntu虚拟机里安装xrdp:
sudo apt update sudo apt install xrdp sudo systemctl enable --now xrdp然后在宿主机按Win+R,输入mstsc打开远程桌面连接,地址填虚拟机IP,端口默认3389,回车后就会看到Ubuntu的图形桌面登录界面,输入账号密码即进入,用起来和在虚拟机窗口里一样顺手。这个方法的好处是:远程窗口不占宿主机桌面空间,可以全屏显示,像操作一台真正的远程电脑一样。
另一个方案是VMware自带的文件共享和拖拽。这些功能依赖VMware Tools。在VMware菜单里选择“虚拟机”->“设置”->“选项”->“共享文件夹”,添加一个宿主机的目录,虚拟机里就能挂载为/mnt/hgfs/路径,这样宿主机和虚拟机的文件互传就省掉了一堆U盘或网络传输的麻烦。需要注意的是,共享文件夹依赖VMware Tools正常工作,如果挂载不上,先重新装一遍Tools或者重启虚拟机。
顺带提一个热词里的疑惑:Ubuntu虚拟机里那个DOS窗口怎么粘贴宿主机命令?在终端中,鼠标中键可以直接粘贴选中的文本;Ctrl+Shift+V也可以粘贴。而宿主机到虚拟机窗口的文本拖拽,需要VMware Tools的剪贴板共享开启,这个选项在“编辑虚拟机设置”->“选项”->“客户机隔离”里。
5. 实操过程与核心环节实现:从创建到登录的完整走查
为了防止前面说的都是“散装思路”,我在这里把一套完整的流程从头到尾串起来,给一个可以直接照抄的“作业答案”,包含每一步应该看到什么、输入什么,以及常见卡点的即时解决。
5.1 完整实操清单:虚拟机创建到SSH登录
阶段一:准备下载VMware Workstation Pro并安装完成;下载Ubuntu 24.04 LTS的ISO镜像;确认宿主机内存>=8GB、磁盘剩余>=50GB、任务管理器虚拟化显示“已启用”。
阶段二:请求VMware主界面 -> 创建新的虚拟机 -> 选择自定义(高级) -> 下一步。
阶段三:虚拟机配置
- 虚拟机兼容性选Workstation 17.x。
- 把“安装来源”选为“稍后安装操作系统”,这比直接选择ISO更灵活,可以在设置里随时改安装源。
- 客户机操作系统选择“Linux”,版本按实际选择Ubuntu 64位。
- 虚拟机名称和安装位置(注意:安装位置不要放C盘系统目录,建议放到D盘或单独的软件目录下)。
- 处理器配置:1个处理器、2或4核。
- 内存:4096MB(或按需设置)。
- 网络类型:NAT。
- I/O控制器和磁盘类型默认即可,磁盘创建新虚拟磁盘,容量60GB,选择“将虚拟磁盘存储为单个文件”或拆分为多个文件都可以,推荐拆分。
- 点击“自定义硬件”,在CD/DVD(SATA)中挂载Ubuntu ISO,网络适配器确认是NAT,打印机的设备可移除(省点资源),确认后点击完成。
阶段四:装系统开启虚拟机 -> 进入Ubuntu安装界面 -> 选择“中文(简体)” -> 安装Ubuntu -> 点击“继续” / “清除整个磁盘并安装Ubuntu” -> 时区/键盘布局默认 -> 设置用户名和密码 -> 等待安装完成 -> 重启。
阶段五:装Tools重启后,菜单栏“虚拟机”->“安装VMware Tools”或“重新安装VMware Tools”,把挂载到虚拟机的虚拟光驱里的tar.gz包解压出来:
sudo mount /dev/cdrom /mnt tar -zxvf /mnt/VMwareTools-*.tar.gz -C /tmp cd /tmp/vmware-tools-distrib sudo ./vmware-install.pl安装过程中一路回车默认值即可,装完重启虚拟机。
阶段六:固定IP用ip a查看网卡名(通常ens33),修改Netplan配置为静态IP,执行sudo netplan apply,用ping 网关IP和ping 8.8.8.8确认网络通。
阶段七:SSH登录在宿主机PowerShell中输入ssh 用户名@虚拟机IP,输入密码,进入命令行界面。
阶段八:打快照回到VMware窗口,菜单“虚拟机”->“快照”->“拍摄快照”,命名为“初始安装完成”。
到这一步,你已经拥有了一个带固定IP、可远程登录、可随时恢复的虚拟机。整个链条走完基本上在20分钟以内。
5.2 网络接口配置常见报错与修改
实际按上面的配置操作时,最麻烦的还是Netplan这一步。这里列出常见的故障现象和根源,方便你在实操中对号入座。
情况A:改了Netplan后无法上网原因通常是yaml格式缩进错误,或者gateway地址填错。Netplan对格式极其敏感,- 192.168.x.x/24前面的减号必须在顶格或对齐的位置,via和nameservers必须在同一层级的缩进下。改完执行sudo netplan generate可以提前检查语法,不报错再apply。
情况B:能ping通IP但域名解析不了原因通常是DNS配置有问题。把nameservers里的地址改成[8.8.8.8, 114.114.114.114]测试,如果能解析了,说明网关代理DNS有问题,用systemd-resolve配合排查,但最省事的就是在Netplan里显式指定DNS,然后重新apply。
情况C:宿主机ping不通虚拟机IP从桌面系统来说,首先检查的是虚拟机的网络策略里是否拦截了ICMP协议。Ubuntu 22.04之后默认ufw是关闭的,基本不会是防火墙问题。但如果装过网络管理工具,可以先用sudo iptables -L查看是否有INPUT DROP规则。其次,查看虚拟机的网络适配器是否还在NAT模式。最后,直接在VMware的虚拟网络编辑器里点“恢复默认设置”来重置VMnet8的网段和网络服务,这个操作能修复相当一部分奇奇怪怪的“虚拟网络”问题。
5.3 打开老系统或Windows虚拟机的兼容性对比
如果你折腾的客户机是Windows 10、Windows 7,或者老老实实跑Ghost系统包,虚拟机配置上有些小差异。
Windows 10/11虚拟机:选择“Microsoft Windows”作为客户机系统,安装时ISO直接挂载即可。虚拟机内存建议8GB(至少4GB),磁盘60GB起。UEFI启动会让Windows安装更顺,装好Windows后同样要装VMware Tools,否则分辨率和拖拽功能不启动。远程登录Windows虚拟机的重点不是SSH,而是启用Windows内的远程桌面服务:设置 -> 系统 -> 远程桌面 -> 开启远程桌面,然后在宿主机运行mstsc输入虚拟机IP加用户名登录。要注意Windows 11的部分版本要求账户有密码才允许空密码登录远程桌面,这是Windows安全策略的默认行为。
老系统(Windows 7或更早)或Ghost镜像系统:VMware新建向导时选择“Legacy BIOS”而不是UEFI,否则启动会卡死。Ghost系统包需要先准备一个PE镜像引导虚拟机,把Ghost文件灌进去再启动。这个操作比正常安装麻烦,一般没必要,除非你怀旧或测试特定软件。
6. 常见问题与排查技巧实录:虚拟机日常运维的那些坑
实践了太多次虚拟机安装和远程登录,踩过的坑可以说是一抓一大把。老话讲得好,排障能力才是真本事,下面这些是我最常遇到、也是热词里反复出现的问题,整理成一个速查表,再展开讲讲背后的排查思路。
6.1 高频问题速查表
| 现象 | 大概率原因 | 解决办法 |
|---|---|---|
| VMware无法启动虚拟机,提示“请确保您有权运行该程序” | 权限不足或服务被禁用 | 以管理员身份运行VMware;启动VMware Authorization Service服务 |
| 新建虚拟机后开机直接蓝屏 | 宿主机虚拟化未开或与Hyper-V冲突 | BIOS打开VT-x/SVM;关闭Windows的“内核隔离”和Hyper-V功能 |
| 虚拟机内无法连网,宿主机也ping不通 | NAT服务未运行或网卡设置错乱 | 重置VMnet8;在服务里启动VMware NAT Service;确认网络适配器为NAT |
| SSH连接超时或拒绝连接 | 虚拟机关机/防火墙拦截/SSH服务未装 | 确认虚拟机开机;sudo apt install openssh-server;放行22端口 |
| SSH能连上但特别卡,敲命令有延迟 | 虚拟机资源不足或宿主机关了CPU虚拟化 | 增加虚拟机的内存和CPU配额;检查宿主机CPU占用 |
| 虚拟机屏幕分辨率固定,无法放大 | VMware Tools未安装 | 安装open-vm-tools或VMware Tools,重启 |
| 克隆或复制虚拟机后网络不通 | MAC地址冲突或网卡被系统禁用 | 在VMware里重置MAC地址,删除/etc/netplan里旧配置重新配 |
| Windows虚拟机远程桌面连不上 | 未开启远程桌面或防火墙拦截 | 打开系统远程桌面;放行防火墙TCP 3389端口 |
6.2 授权与权限问题:为何提示“无法连接到虚拟机”
热词里有很长一条:“vmware workstation 无法连接到虚拟机。请确保您有权运行该程序、访问该程序使用”。这个问题在Windows上一半以上是权限问题。
VMware Workstation的虚拟化工具依赖Windows服务,尤其是“VMware Authorization Service”。当你用非管理员权限打开VMware,或者这个服务被某些优化软件禁用了,打开虚拟机时就会出现这种“无法连接”或“权限失败”的提示。排查步骤:
- 右键VMware图标,选择“以管理员身份运行”。
- 按
Win+R输入services.msc,找到VMware相关服务,确认状态是“正在运行”。如果没运行,右键启动,并把启动类型设为“自动”。 - 如果服务启动失败,大概率是杀毒软件或系统权限限制导致,可以把VMware的安装目录加到杀毒软件白名单,或者重装VMware(重装时会重新注册服务)。
还有一个常见细节:从别人那里拷贝的虚拟机文件夹,如果放在系统盘或存放在权限受限的目录下,也可能导致打不开。建议把虚拟机文件放在一个普通目录,比如D:\VMs\,并将该目录的“完全控制”权限授予当前用户。
6.3 虚拟机网络起不来的排查顺序
每次谈到远程登陆,网络问题一定是重灾区。我按经验给你一个排查顺序,踩坑时按顺序执行,比乱试强得多。
- 查服务:Windows服务管理器里确认VMware DHCP Service和VMware NAT Service都在运行。NAT模式下,DHCP服务挂了会导致虚拟机拿不到IP;NAT服务挂了会导致所有NAT流量不通。
- 查网卡:控制面板 -> 网络和共享中心 -> 更改适配器设置,确认VMware Network Adapter VMnet1和VMnet8这两个虚拟网卡存在且已启用。如果不存在,去VMware“虚拟网络编辑器”里点“更改设置”,然后“恢复默认设置”,它会重建所有虚拟网卡。
- 查虚拟机内IP:
ip a确认虚拟机的接口有IP。如果是空的,执行sudo dhclient强制获取;如果是网卡状态DOWN,执行sudo ip link set ens33 up。 - 查网关连通性:
ping 网关IP(NAT模式下网关一般是192.168.x.2)。不通说明VMnet8网段配置和虚拟机不在同一网段,去虚拟网络编辑器里把子网IP改成和虚拟机同网段。 - 查外网:
ping 8.8.8.8如果通说明真机网络和DNS分别看;不通说明宿主机的代理服务或防火墙拦了NAT流量。
6.4 “蓝屏”与旧版系统兼容性
热词里的“虚拟机安装linux蓝屏”“win11虚拟机安装出现boot”也很典型。蓝屏或者启动不到系统,大部分由三个原因造成:
- CPU虚拟化未开启或与Hyper-V冲突。Windows 10/11的基于虚拟化的安全性(VBS)会占用VT-x资源,和VMware抢地盘。解决办法:控制面板 -> 程序和功能 -> 启用或关闭Windows功能,取消勾选Hyper-V;关闭Windows安全中心的“内存完整性”或“内核隔离”。改完重启。
- 镜像问题。非官方精简版GHOST系统或者老ISO在用UEFI启动时会失败。两个办法:换镜像,或者把虚拟机引导模式改成Legacy BIOS再安装。
- 虚拟硬件版本不匹配。老CPU跑新虚拟机版本可能不支持,把虚拟机的兼容性降低到Workstation 15.x/16.x再试。
7. 远程登陆的进阶玩法:局域网内其他设备也能连虚拟机
前面讲的SSH和远程桌面,都是宿主机操作虚拟机的维度。如果你想把虚拟机当成一台独立服务器,让手机、平板、或者局域网里另一台电脑都能连上去,那这样就还差一步。虽然热词里没有细问这个方向,但从“主机访问虚拟机网站”“局域网内访问虚拟机”这类短语能看出来,很多人的需求已经超出宿主机本身了。
在NAT模式下,虚拟机被“藏在”宿主机的NAT里面,其他局域网设备默认找不到它。要实现从局域网访问虚拟机,有两个常用手法:
方法一:改桥接模式。把虚拟机的网络适配器改成桥接模式,这样虚拟机就直接和宿主机在同一个网段,局域网里所有设备都能像访问宿主机一样访问它。桥接模式的缺点是会占用一个局域网IP,并且如果你的办公室网络有严格的安全验证策略(比如绑定MAC地址、公司级网络准入),桥接之后虚拟机可能直接无法上网。这时候用方法二。
方法二:宿主机做端口转发。在VMware的“虚拟网络编辑器”里选择VMnet8,点“NAT设置”,添加端口转发规则。例如,你想让局域网一台电脑访问虚拟机里的SSH端口,可以设置:宿主机的某个端口(比如2222)转发到192.168.163.130的22端口。这样局域网设备访问宿主机IP的2222端口时,数据就被转发到虚拟机的22端口。类似的方式可以转发HTTP端口(80/8080)来访问虚拟机里的网站。
方法三:配合宿主机网络共享。Windows宿主机开启“Internet连接共享”或者用ip转发功能也能实现,但配置复杂且容易踩坑,偶尔尝试即可,不推荐作为首选。
其中方法二在办公场景和信息安全规范下比较实用,因为宿主机始终保持着“所有流量来自一台机器”的表象,对局域网其他设备来说,一切访问都打到宿主机,逻辑上抓不到虚拟机的位置。实际搭建的时候,端口转发的“外部端口”尽量选不常用的端口号,避免端口被扫描到时一眼看出来是SSH。
8. 分享几个我用了很久的习惯
写到最后,作为把这套流程反复搭建过几十次的人,分享几个我个人的习惯,正好可以作为这篇文章的结尾。
第一,虚拟机目录统一管理。我在D盘建了一个VMs目录,每个虚拟机一个子目录,名字格式是“客户机系统-用途”,比如ubuntu-dev、win10-test。这样不管是备份、迁移还是清理,都一目了然。
第二,每完成一个阶段就拍快照。系统装完拍一张,软件环境配完拍一张,测试代码开工前拍一张。快照不是占地方,而是后悔药,它让你敢随便折腾。
第三,不用的时候挂起而不是关机。虚拟机“挂起”相当于内核休眠,几秒钟恢复现场,比关机再做各种服务启动快得多,而且省资源。快捷键是Ctrl+G进入虚拟机后,VMware菜单->“电源”->“挂起客户机”。
第四,SSH密钥代替密码。配置一次,以后免密登录,省下大量时间。而且公钥认证比密码认证更安全,不用每天盯着密码泄漏的风险。
虚拟机这门手艺,本质上是在“可重复”和“可摧毁”之间找到平衡。它给了你一台可以随时推倒重来的电脑,而你要做的,就是利用这个特性,大胆去实验、去学习。装上它,连上它,剩下的就是你自己的战场了。