
本地想练 Linux、跑个服务、学运维命令手边只有一台 Windows 电脑最省事的做法就是装一台 CentOS7 虚拟机再用 Xshell 从宿主机连上去敲命令。这套组合我前后折腾过十几台机器从早期的 VMware 12 到现在的 Workstation 17从 Xshell 5 到 Xshell 7坑基本踩全了。很多人卡住的地方其实不是虚拟机装不起来而是装完之后 Xshell 死活连不上报个“Connection failed”就不知道往哪查。这篇就把整条链路拆开讲VMware 虚拟机怎么建、CentOS7 怎么装、CentOS7 网络配置怎么写、Xshell 会话怎么配、连不上时按什么顺序排查。内容偏向实操每一步都会说清楚为什么这么选适合刚接触 Linux 的新手也适合装过几次但网络那块一直稀里糊涂的朋友。1. 先把三个组件的分工理清楚1.1 VMware、CentOS7、Xshell 各自扮演什么角色很多人一开始就把这三个东西混着学结果出问题不知道是哪一层的事。你可以把它们想象成一套“远程办公”的场景VMware Workstation 是那栋楼负责提供场地和水电CentOS7 是你在这栋楼里租下的一间办公室里面装着操作系统和你要跑的服务Xshell 则是你手里的对讲机让你坐在自己原来的工位上就能指挥办公室里的一切。三者是层层依赖的关系——虚拟机没跑起来Xshell 自然是连不上的CentOS7 没装好SSH 服务就不存在网络配置错了对讲机就喊不到人。搞清这层关系之后排查问题的顺序就自然出来了先看虚拟机电源是不是开着再看 CentOS7 里 sshd 服务在不在跑最后才看网络通不通。我见过太多人一上来就重装 Xshell、换版本、删会话折腾半天发现是虚拟机根本没启动。所以这一节不是废话它决定了你后面遇到问题时是五分钟解决还是浪费一晚上。另外提一句虚拟机的好处在于它是一台“可以随便弄坏”的机器。命令敲错了、配置改崩了、系统起不来了删掉重装只要二十分钟。刚学 Linux 的时候这种容错空间比什么都重要真机上一旦把引导搞坏重装系统的心理成本高得多。1.2 版本怎么选以及镜像从哪下版本这块有个现实情况必须说清楚CentOS 7 已经在 2024 年 6 月 30 日结束生命周期EOL官方主站上的镜像已经被挪到归档目录国内镜像站也陆续把它移到了 vault 路径。也就是说现在直接去官网首页找 CentOS7 的 ISO很可能找不到。可用的途径是走国内高校或云厂商的镜像站在归档目录里按7.9.2009这个版本号去找isos/x86_64/下面能拿到 ISO。7.9.2009 是 7 系列的最后一个版本也是最值得用的一版修补最全。ISO 又分几种minimal最小化安装约 900MB 到 1GB、DVD完整安装约 4.5GB、Everything约 10GB。学命令、跑服务用 minimal 完全够装完系统才十几个 G 的占用清爽、启动快逼着你自己动手装工具反而学得快。DVD 版的好处是离线环境里 yum 装包不用愁但体积大、下载慢。我个人的习惯是练手用 minimal需要长期离线用的环境才考虑 DVD。VMware 这边目前主流是 Workstation Pro 17.x。早几年它是要买授权码的2024 年之后官方对个人使用放开了免费许可具体怎么获取以官网当前说明为准别去网上那些来路不明的“密钥生成器”里碰运气那东西要么无效要么带毒我见过中招的机器得不偿失。安装时记得勾选“增强型键盘驱动”不然某些 Win 组合键会被宿主机抢走。Xshell 这边家庭和学校用户可以在官方申请免费授权功能上够用。版本建议直接用较新的 7 或 8老版本比如 Xshell 4、5会碰到后面要讲的算法协商问题——不是老版本不能用而是它默认支持的加密算法太旧新系统默认不认了。这一条记在心里第 4 节会详细展开。1.3 宿主机要先做的前置检查装虚拟机之前有一件事必须先确认CPU 的虚拟化功能有没有在 BIOS 里打开。Intel 平台叫 VT-xAMD 平台叫 AMD-V。如果没开VMware 装完系统启动时会报“此主机支持 Intel VT-x但 Intel VT-x 处于禁用状态”或者直接卡在开机画面。检查方法很简单在 Windows 的任务管理器里点“性能”标签CPU 那一栏右下角如果有“虚拟化已启用”就没问题显示“已禁用”的话重启进 BIOS 打开。内存和磁盘也得算一算。CentOS7 minimal 跑起来给 2GB 内存够用想跑 Docker 或者数据库就分 4GB硬盘按 20GB 分配选“拆分成多个文件”这种方式方便迁移。宿主机本身的物理内存建议留出 4GB 以上给 Windows 用别把 16GB 内存的机器一股脑全分给虚拟机那样宿主机自己会卡到怀疑人生。磁盘方面虚拟磁盘文件会随着使用慢慢长大宿主机至少留 50GB 空闲空间比较稳妥。还有个容易忽略的点Windows 上如果开了 Hyper-V或者装了 WSL2、Docker Desktop它和 VMware 会争抢虚拟化层。表现是 VMware 能打开但虚拟机跑得极慢或者弹出兼容性提示。真遇到了可以在“Windows 功能”里取消勾选 Hyper-V 后重启或者按官方文档给 VMware 配置vmx参数绕过。这个坑我当年折腾了大半天一直以为是虚拟机配置太低最后才发现是 Hyper-V 在中间插了一脚。2. VMware 里把 CentOS7 装起来2.1 新建虚拟机时那几个关键选项打开 VMware点“创建新的虚拟机”向导会问你是“典型”还是“自定义”。别嫌麻烦选自定义。典型模式会自动帮你决定网络类型、磁盘控制器这些出了问题不好定位自定义模式每一步都能自己选虽然多花两分钟但后面网络那块你会感谢自己。第一处关键选择是“安装客户机操作系统”这一步一定要选稍后安装操作系统。如果你选了“安装程序光盘映像文件”VMware 会启动简易安装模式自动帮你把系统装完但这个过程会跳过分区、跳过网络配置装出来的系统跟你手动装的不是一回事主机名、用户、时区全靠猜。手动装虽然慢一点但每个选项都在你眼皮底下过一遍这是学 Linux 最好的机会。第二处关键选择是网络类型三个选项桥接、NAT、仅主机。桥接是让虚拟机直接接入你所在的物理局域网它会从你家路由器拿一个和宿主机同网段的 IP等于局域网里多了一台独立设备同一 WiFi 下的手机、别的电脑都能访问它。NAT 是让虚拟机藏在宿主机后面通过宿主机的网络出口上网外部设备默认访问不到它但宿主机能访问。仅主机则是完全隔离只能和宿主机通信连外网都上不了。练习场景我推荐NAT。理由是虚拟机的 IP 段和宿主机所在网段隔离开你换 WiFi、换办公室、改路由器都不会影响虚拟机的连接IP 相对稳定同时 Xshell 从宿主机连虚拟机完全没问题。后面的静态 IP 配置也是按 NAT 来讲的。2.2 硬件参数与分区方案的确定过程硬件这一步处理器给 1 到 2 个核心注意是“每个处理器的核心数量”和“处理器数量”两个值总量别超过宿主机物理核心数的一半内存给 2048MB 起步网络适配器选 NATI/O 控制器类型和磁盘类型保持默认LSI Logic 和 SCSI磁盘选“创建新虚拟磁盘”容量填 20GB下面选“将虚拟磁盘拆分成多个文件”。分区是新手最容易慌的地方。我给的方案是按标准分区来不碰 LVM理由是这样最直观、最好理解/boot给 200MB放内核和引导文件这个必须独立、swap给 2048MB相当于虚拟内存物理内存小的时候尤其要有、剩下的全给/根分区。这样分完系统装完就能用不用纠结逻辑卷怎么扩容。如果你想要更接近生产环境的做法可以研究 LVM 分区/、/home、/var各自独立好处是后期扩容灵活。但刚上手阶段分区越简单越好先跑通再说。磁盘容量 20GB 是 minimal 安装的够用值。想装 Docker 镜像、跑中间件建议直接给 40GB 或 60GB反正虚拟磁盘是按需增长的你给 60GB实际占用可能只有 8GB不会真吃掉宿主机 60GB。这个特性很多人不知道白白把容量给得很小后面磁盘满了又要扩容麻烦。2.3 安装过程与首次启动要处理的事虚拟机创建完点“编辑虚拟机设置”在 CD/DVD 里挂上你下好的 CentOS7 ISO确认“启动时连接”勾上然后开机。出现安装菜单时选第一项Install CentOS 7。接下来是语言、时间、安装源、软件选择、安装位置、网络和主机名这几屏。时间那里把时区选成“亚洲/上海”顺便把网络时间同步打开。软件选择选“最小安装”右边那些附加组件先一个都别勾后面需要什么自己 yum 装这样你能清楚知道每个工具是谁带来的。安装位置那里选“我要配置分区”按上面说的方案手动分分完点“完成”接受更改。网络和主机名这一屏非常关键先把右上角的网卡开关打开然后把主机名改成一个有意义的名字比如dev01。很多人装完系统发现网卡没有 IP就是因为这一步忘了开开关。安装过程中会让你设 root 密码设一个你记得住的强密码比如大小写加符号那种如果密码太弱系统会让你点两次“完成”才能通过。装完重启登录 root先做两件事一是拍快照。VMware 菜单栏里“虚拟机 - 快照 - 拍摄快照”名字写“系统初始状态”。这是你的后悔药后面任何配置改崩了一键回滚到干净状态比重新装系统快一百倍。二是执行一次yum update -y更新系统然后关机再拍一个快照叫“更新完成”。养成这两个快照的习惯后面调网络、调 SSH 配置的时候心态会稳很多。3. CentOS7 网络配置与 Xshell 连接3.1 搞懂 NAT 模式背后发生了什么在配置静态 IP 之前得先知道那些地址是从哪来的。VMware 装完之后会在宿主机上新增两块虚拟网卡VMnet1对应仅主机模式和 VMnet8对应 NAT 模式。在 VMware 的“编辑 - 虚拟网络编辑器”里选中 VMnet8能看到它的子网地址默认可能是192.168.100.0子网掩码255.255.255.0下面还有“NAT 设置”里能看到网关地址通常是192.168.100.2。这就是关键虚拟机的 IP 必须和 VMnet8 在同一个网段网关必须填 VMnet8 的网关地址。我见过太多人随手给虚拟机配了个192.168.1.100结果就是连不通因为那是你家路由器的网段虚拟机根本不在这个网络里。所以配静态 IP 前第一步永远是打开虚拟网络编辑器把这三样记下来子网地址、子网掩码、网关地址。还有一个 DHCP 的坑VMnet8 默认开了 DHCP 服务会在192.168.100.128到192.168.100.254之间自动分配地址。如果你要配静态 IP建议挑一个 DHCP 范围之外的地址比如192.168.100.10避免哪天 DHCP 把同一个地址分给了别的虚拟机造成 IP 冲突。或者干脆在虚拟网络编辑器里把“使用本地 DHCP 服务将 IP 地址分配给虚拟机”的勾去掉彻底由你自己掌控。3.2 手把手写 CentOS7 的静态 IP 配置登录虚拟机先看网卡名字ip addr或者nmcli device status。CentOS7 上通常是ens33或者ens160取第一个不是lo的。然后编辑配置文件/etc/sysconfig/network-scripts/ifcfg-ens33用vi打开改完大致是这样TYPEEthernet BOOTPROTOstatic NAMEens33 DEVICEens33 ONBOOTyes IPADDR192.168.100.10 PREFIX24 GATEWAY192.168.100.2 DNS1223.5.5.5 DNS2119.29.29.29每一行的意思都值得说一下。BOOTPROTOstatic是告诉系统别用 DHCP用你写死的地址如果留着dhcp那你写的IPADDR是不生效的这也是新手最常见的失败原因。ONBOOTyes表示开机自动启用这块网卡默认值是no不改的话重启系统网卡就不起来非常坑。PREFIX24等同于掩码255.255.255.0比写NETMASK更简洁两种都行。GATEWAY填的是第 3.1 节里从虚拟网络编辑器记下来的网关。DNS 用公共解析服务就行223.5.5.5、119.29.29.29都是国内响应快的地址写两个是为了一个挂了还有备用。有人喜欢写114.114.114.114也可以用。注意 DNS 不配的话pingIP 能通但ping域名不通yum会报“Could not resolve host”这又是一个经典误判场景。改完保存重启网络服务systemctl restart network然后ip addr看地址是否生效ip route看默认路由是不是指向你配的网关ping 192.168.100.2测网关通不通ping www.baidu.com测 DNS 通不通。这几步走通虚拟机的网络就没问题了。如果systemctl restart network卡住不动通常是网关地址写错或者网卡名字写错用CtrlC打断检查配置文件里的DEVICE和实际网卡名是否一致。3.3 Xshell 建会话并连上去打开 Xshell点“文件 - 新建”名称随便写centos-dev01协议选 SSH主机填192.168.100.10端口22然后左边点“用户身份验证”方法选 Password用户名填root密码填你装系统时设的。点确定再点“连接”第一次会弹主机密钥确认选“接受并保存”。如果一切顺利你会看到[rootdev01 ~]#这样的提示符。到这一步事情就成了。但有几个细节会让体验差别很大中文乱码是高频问题。CentOS7 默认是 UTF-8 编码Xshell 会话属性里“终端 - 编码”要选 Unicode (UTF-8)不然ls出来的中文文件名全是问号。字体在“外观”里改推荐 Consolas 或者等宽字体字号 12 到 14写代码眼睛舒服很多。颜色方案也可以调一调默认那个暗蓝底配白字看久了累。还有个小习惯值得养成把会话保存成带目录的分类比如“实验室/数据库/MySQL”。会话一多一堆192.168.100.x你根本分不清谁是谁。密码这块我不建议长期存在会话里虽然方便但本地配置一旦泄露就等于把机器交出去了。更稳妥的做法是用密钥登录生成一对密钥公钥放到虚拟机的~/.ssh/authorized_keysXshell 里导入私钥以后连接不用输密码安全性也更高。连接成功之后先把系统里的 sshd 服务确认一下systemctl status sshd应该是 running 状态systemctl enable sshd设成开机自启。这两个命令确保你下次开机还能连上不然重启一次虚拟机Xshell 又连不上了白忙活。4. 连不上时按这个顺序排查4.1 从下往上的分层排查法连接失败的时候别乱试按层次往下查效率最高。我把顺序整理成一张表对着走一遍基本都能定位到问题。排查层检查命令/操作典型现象常见原因第一层虚拟机是否运行VMware 里看电源状态Xshell 报连接超时虚拟机没开机、挂起、崩溃第二层虚拟机 IP 是否正常ip addr查不到 IP 或 IP 是 169.254 开头ONBOOTno、网卡没启用、配置写错第三层宿主机能否 ping 通虚拟机宿主机 CMD 里ping 192.168.100.10请求超时IP 段不一致、防火墙拦截、网卡类型选错第四层SSH 服务是否在跑systemctl status sshd端口不通、拒绝连接sshd 未安装、未启动、防火墙挡住 22 端口第五层Xshell 配置是否正确检查主机、端口、用户名认证失败、连接被拒主机写错、端口写错、用户名密码错用这张表的时候自上而下走第一层没过就别看第二层。我见过最离谱的一次是有人排查了两小时网络最后发现虚拟机的电源键根本就没按。分层排查的意义就是让你别跳步。关于防火墙这一层CentOS7 默认开的是 firewalld会挡住 22 端口。两种处理方式一种是图省事直接systemctl stop firewalld systemctl disable firewalld练习环境里这么干没问题另一种是规范做法firewall-cmd --permanent --add-servicessh然后firewall-cmd --reload只放行 SSH其他端口继续挡着。如果是往生产方向走一定养成后一种习惯disable firewalld这种操作在真实服务器上是会被骂的。4.2 Xshell 算法协商报错的根因和改法有一类报错很有意思它不是连不上而是连接时直接弹“找不到匹配的 key exchange 算法”或者“no matching key exchange method found”。这个问题的根因是版本错配CentOS 7.4 之后的版本逐步禁用了老旧的密钥交换算法比如diffie-hellman-group1-sha1而老版本的 Xshell 只认这些旧算法双方谈不拢。新版 Xshell 反过来支持了curve25519-sha256这类新算法但有些老系统又不支持所以也可能出现新客户端连不上老服务器的情况。解决办法有两个方向改客户端或者改服务端我一般选前者因为动服务端配置有风险。Xshell 里在会话属性中找到“连接 - SSH - 加密”里面可以勾选客户端允许使用的算法列表把两边都支持的算法勾上比如diffie-hellman-group14-sha1、diffie-hellman-group-exchange-sha256这些。如果客户端界面里没有可选项说明版本太老那就升级到 Xshell 7 或 8。如果非要从服务端解决可以编辑/etc/ssh/sshd_config加一行KexAlgorithms显式指定允许的算法组合重启 sshd 生效。注意这里要谨慎写错了会导致 SSH 服务起不来把自己关在门外。改之前先留着虚拟机控制台窗口VMware 里那个界面别只靠 Xshell万一 SSH 挂了还能从控制台进去救。这个算法问题在新版系统上还会以另一种形式出现ssh-rsa相关的公钥算法被标记为不再安全连接时提示公钥类型不支持。对应的处理是在客户端配置里允许ssh-rsa或者在服务端生成新的 ed25519 密钥。只要记住一句话报算法相关的错就是两边支持列表没有交集把交集找出来就行了。4.3 几个让人抓狂的诡异场景有一个场景值得单独说克隆虚拟机之后 IP 冲突或者网卡起不来。VMware 的“管理 - 克隆”很方便但克隆出来的机器会带着原来的 MAC 地址同一网络里两台机器 MAC 相同网络直接乱套。正确做法是克隆后进虚拟机编辑网卡配置文件把UUID那行删掉或者改成新生成的然后在虚拟机设置里点“高级 - 生成新的 MAC 地址”重启网络。每次克隆都做这一步能省掉无数莫名其妙的故障。另一个是快照回滚之后连不上。原因是你回滚到了配置静态 IP 之前的状态虚拟机拿的是 DHCP 地址和 Xshell 会话里存的地址不一致。这不是故障是预期行为。养成习惯配置完网络、装完基础环境之后立刻拍一次快照把基线固定下来。还有一个是宿主机重启之后连不上。排查发现 NAT 服务的虚拟网卡没起来。解决办法是在 VMware 的虚拟网络编辑器里点一下“还原默认设置”它会重建 VMnet1 和 VMnet8然后重新配置一遍静态 IP 即可。注意“还原默认设置”会重置子网段你之前的192.168.100.x可能变成别的所以操作完记得回头改虚拟机的静态 IP 配置两边保持一致。也常见有人问为什么ping宿主机通、ping外网不通。这种情况基本是 DNS 或网关的问题cat /etc/resolv.conf看看 DNS 有没有写进去ip route看默认路由在不在。如果写的是DNS1但resolv.conf里没有可能是 NetworkManager 覆盖了配置用nmcli connection modify ens33 ipv4.dns 223.5.5.5更稳妥它是直接改 NetworkManager 的连接配置不容易被覆盖。5. 日常使用里的提效经验5.1 Xshell 的常用操作与快捷键连上之后真正提高效率的是操作习惯。会话窗口里可以直接按CtrlInsert复制选中内容ShiftInsert粘贴比鼠标右键快。切换会话用Alt数字多开几个会话时特别顺手。窗口可以点“窗口 - 垂直平铺”比如左边看日志、右边敲命令不用来回切。命令回退目录这个需求也常有人问。Linux 里cd -可以回到上一个所在目录来回切换一次非常好用敲两次就回到原点了。如果要在两个目录之间反复横跳cd -是最省事的方案要管理多个目录可以考虑pushd和popd组成目录栈pushd /var/log进去popd弹出来适合在好几层目录之间跳的场景。文件传输不用另开工具装个lrzsz就行yum install -y lrzsz然后rz上传弹窗选本地文件sz filename下载。大文件或者批量传还是用 Xshell 自带的 Xftp 面板拖拽式操作断点续传也有。还有个容易被忽略的功能是“日志记录”在会话属性里开启“开始日志记录”把每次的操作记录写进文件排查历史操作或者留痕的时候非常有用。5.2 快照、克隆和备份的搭配策略快照这块我有一套固定用法。命名上带日期和用途比如20250110-系统干净、20250112-装完Docker别用“快照1”“快照2”这种名字过一周你自己都不知道哪个是哪个。快照不要拍太多VMware 的快照是差分链式的拍得越多回滚越慢磁盘占用越大。我一般保留两到三个系统初始、基础环境就绪、当前工作状态。备份的话关闭虚拟机之后整个虚拟机目录拷贝一份到移动硬盘就是最可靠的完整备份恢复的时候直接打开.vmx文件就行。这种方式比快照更彻底适合阶段性的存档。同时重要的配置文件养成习惯放进 Git 或者云笔记比如网卡配置、sshd 配置、常用脚本机器坏了这些是最花时间重搞的部分。还有个小技巧把虚拟机目录放在 SSD 上系统盘和虚拟磁盘都在 SSD体验会比放机械硬盘好很多。如果宿主机是机械盘虚拟机开机和编译会很痛苦。磁盘空间不够的时候把虚拟机目录单独放一个盘别和系统盘挤在一起宿主机系统盘满了会拖累整个机器的响应。5.3 这套环境后续能怎么用起来环境搭好只是起点。接下来可以做的练习很多给 CentOS7 换国内 yum 源把CentOS-Base.repo里的mirrorlist换成baseurl指向国内镜像站装 Docker 跑容器装 Nginx 做静态站点装 MySQL 练 SQL。做这些之前先把“基础环境就绪”的快照拍好做崩了就回滚二十分钟的折腾变成二十秒的恢复。如果想练多机集群用刚才说的克隆方式复制几台改 IP、改主机名、配 hosts 互相解析就能模拟一个三节点的小集群练主从复制、负载均衡这些内容。练完发现资源不够就删掉几台虚拟机的好处就是弹性极大。宿主机内存 16GB 的话同时跑三台 2GB 的虚拟机是稳的再多就要斟酌了。还有个方向是跟 Windows 玩互操作。虚拟机和宿主机之间可以建共享文件夹VMware 菜单里设置共享目录虚拟机里挂载使用传文件不用来回折腾。但要注意共享文件夹在 NAT 模式下也能用因为它是 VMware Tools 提供的机制和网络配置无关。装了 VMware Tools 之后拖拽文件、分辨率自适应这些体验都会好很多值得花几分钟装上。最后分享一个我踩过的坑早期我图省事把所有虚拟机的 SSH 端口都保持 22然后会话名都写192.168.x.x结果有次误连到错误的机器上执行了rm -rf虽然损失不大但教训很深。现在的做法是每台虚拟机的主机名和会话名保持对应hostname设成能一眼认出的名字提示符里带上主机名敲命令之前先看一眼提示符是不是你要的那台。这种小习惯比任何技巧都值钱。