Xshell连接VMware CentOS7虚拟机:网络配置与排错指南

发布时间:2026/9/17 12:58:47
Xshell连接VMware CentOS7虚拟机:网络配置与排错指南
虚拟机里装好 CentOS7结果天天在 VMware 那个小窗口里敲命令窗口小、复制粘贴别扭、中文还容易糊成一团——这事我干了不到两天就受不了了。后来固定成一套流程VMware 只管把机器跑起来Xshell 只管操作两边各干各的活互不干扰。这篇就把「使用 Xshell 连接 VMware 虚拟机CentOS7」这条链路从头到尾讲清楚包括 VMware 建机时参数怎么分、CentOS7 网络配置为什么必须手改、Xshell 会话怎么建、连不上时按什么顺序排查以及那些装完不记下来下次一定还会踩的坑。适合刚接触虚拟机和 Linux、准备搭一套本地练习环境的朋友也适合已经装过但每次网络都要折腾半天的老手对照着检查。1. 先把这套组合想明白为什么要用 Xshell 去连虚拟机1.1 本地虚拟化这套方案的适用场景与边界在物理机上装 VMware再在 VMware 里跑一台 CentOS7本质上是把一台完整的 Linux 服务器塞进你现有的电脑里。它的价值在于隔离和可重置装崩了删掉重来测试危险命令不用怕练完关掉不占资源。对于学习 Linux 命令、练 Shell 脚本、搭建本地服务、验证部署流程来说这是成本最低的一条路。但要注意边界。虚拟机的性能上限取决于宿主机内存分得太大主机会卡CPU 核心分得太多反而会因为调度开销变慢。它也不适合做长期在线的服务因为你的电脑关机它就没了。我一般建议把虚拟机定位成「随时能推倒重来的练习场」而不是「生产环境的替代品」心态摆正之后很多取舍就顺理成章了。至于为什么不用 WSL2 或者云主机WSL2 更轻但网络模型和完整 CentOS7 有差异有些老服务的依赖装不上云主机要联网、要花钱练手时手滑删掉根目录会心疼。本地虚拟机在这两者之间恰好是一个「完整、离线、随便折腾」的位置。1.2 Xshell 在这条链路里补上了什么虚拟机自带的那个控制台窗口只能算「能用的最低限度」。它的问题很具体分辨率跟着虚拟机走窗口一缩放字就发虚复制粘贴需要装 VMware Tools 才顺手没装就只能靠眼睛抄滚屏缓冲有限命令输出一长就翻不回去多台机器要开多个窗口切来切去容易搞混。Xshell 是走 SSH 协议连过去的等于把虚拟机当成一台网络上的服务器来操作上面这些问题基本都没了。对比项虚拟机自带控制台Xshell 通过 SSH 连接字体与显示跟随虚拟机分辨率易发虚本地渲染任意等宽字体清晰复制粘贴依赖 VMware Tools常失灵原生支持鼠标选中即复制回滚缓冲通常几百行可设上万行随便翻多机管理多开窗口无分组会话树分组一键切换批量操作不支持支持同时向多个会话发命令日志留档无可自动记录每次会话文本提示这不是说自带控制台没用。系统装到一半、网络没配好、SSH 服务起不来的时候唯一能进去的就是它。所以两个都要会控制台是后路Xshell 是日常。2. VMware 侧的准备安装、建机与参数分配2.1 版本选择与几个容易被忽略的安装设置VMware Workstation 现在分 Player 和 Pro。Player 免费功能受限不能同时跑多台虚拟机的部分高级功能也缺但对单机练习够用。Pro 在近几个大版本已经对个人使用放开个人场景下不用纠结授权问题直接装 Pro 就行功能完整快照、克隆、虚拟网络编辑器这些后面都要用到。企业环境使用请按厂商的授权条款来。安装本身没什么难度但有两处值得留意。一是安装路径别放在中文目录或者带空格的深层路径下某些老版本的驱动加载会出问题建议直接D:\VMware这种干净路径。二是装完后主机多出来两块虚拟网卡VMnet1 和 VMnet8这是虚拟网络的基础设施不要手贱去设备管理器里禁用它们否则虚拟机网络会直接瘫掉。还有人遇到过「虚拟机菜单里没有配置和打开选项」的情况绝大多数是三种原因一是左侧选中的是「我的电脑」这个根节点而不是具体的虚拟机条目右侧自然不出设置面板二是虚拟机正处于挂起或者运行中的某些状态部分配置项被灰掉先关机再说三是安装没走完或者界面卡在授权提示页功能菜单被限制。挨个排除基本都能解决。2.2 创建虚拟机时的硬件参数怎么定这一步是整个流程里最容易埋雷的地方填错了后面要么卡得要死要么磁盘不够用。内存的分配逻辑很简单宿主机总内存减去系统占用剩下的分一半给虚拟机比较稳妥。8GB 的机器给 2GB 到 2.5GB16GB 给 4GB32GB 给 8GB。给太少装图形界面会卡到怀疑人生给太多宿主机自己就开始疯狂读盘。CPU 分配上虚拟机的处理器数量乘每个处理器的核心数不要超过宿主机的物理核心数。四核八线程的机器给 2 个处理器各 1 核或者 1 个处理器 2 核都行。给到和物理核心数相等是上限超过之后 VMware 会提示警告。磁盘是重点。默认的 20GB 装完系统加一点软件就剩不下多少了我一般直接给 40GB 到 60GB。这里有个关键选择磁盘是拆成多个文件还是一次性分配。拆成多个文件方便移动和拷贝性能略差一次性分配性能好但创建时要等并且占用真实空间。练习环境建议拆分成多个文件方便整机复制备份。参数推荐值8GB 宿主机推荐值16GB 宿主机说明内存2048 MB4096 MB装图形界面建议不低于 2GB处理器1 处理器 2 核心2 处理器 2 核心不超过物理核心数磁盘容量40 GB60 GB拆分为多个文件网络类型NATNAT初学最省心见第 3 章磁盘类型SCSISCSI默认即可2.3 CentOS7 安装过程中的几个关键选择镜像我建议用最后一个小版本 CentOS-7-x86_64-DVD-2009.iso这是 7 系列的收尾版本兼容性最好。需要知道的是 7 系列已经停止维护默认的软件源地址已经失效装完之后要把源换成归档地址或者国内的镜像站地址否则 yum 装任何东西都会报错。这是新手最常卡住的一个点装完系统第一件事就应该处理它。安装界面里语言选英文或者中文都行但如果你后面主要靠命令行工作我建议装英文报错信息搜起来方便。安装类型选择「最小安装」还是「带图形界面」看需求只练命令和网络服务最小安装足够启动快占用低想用浏览器或者图形工具就选 GNOME 桌面。软件选择页面里记得勾上「开发工具」这一组后面编译安装软件会省很多事。分区直接选自动分区就行练习环境没必要手动分。但有一处必须改网络和主机名页面右上角的开关装系统的时候就要把它打开让网卡在安装阶段就激活否则装完开机网卡是关闭状态你还得进控制台改配置文件多绕一圈。主机名写一个有意义的名字比如centos7-test后面 Xshell 会话列表里一眼就能认出来。root 密码设一个自己记得住的太复杂的结果就是每次都要翻记事本。另外建议创建一个普通用户并勾选「将此用户设为管理员」日常操作用普通用户加 sudo只有必要时才切 root这是好习惯早养成比晚养成省事。3. CentOS7 网络配置让虚拟机真正可被连接3.1 三种网络模式到底选哪个Xshell 连不上虚拟机九成的锅在网络模式。VMware 给了三种模式差别很大。NAT 模式虚拟机通过宿主机做地址转换上网虚拟机在一个独立的虚拟网段里宿主机和虚拟机之间可以互相访问。开箱即用不用管公司或者家里的网络怎么分IP 冲突风险最低。缺点是宿主机以外的机器连不进来不过练习场景谁在乎这个。桥接模式虚拟机和宿主机在同一个物理网段里相当于局域网里多插了一台机器。同一个网络里的其他设备可以直接访问虚拟机虚拟机也能被当作一台真实服务器。缺点是要占用局域网的 IP 资源公司网络里可能因为 MAC 地址限制连不上在校园网或者有认证的网络里尤其容易出问题。仅主机模式只能宿主机和虚拟机通信虚拟机不能上网。适合做纯隔离的测试环境但装软件的时候会很痛苦。模式虚拟机能否上网宿主机能否访问虚拟机是否需要占用局域网 IP推荐场景NAT能能否初学、日常练习桥接能能是需要被同网段其他设备访问仅主机不能能否隔离测试、安全实验初学直接选 NAT后面有需要再改。切换模式之后要重新配置虚拟机的 IP因为网段变了。3.2 静态 IP 配置全过程NAT 模式下虚拟机默认走 DHCPIP 可能会变。Xshell 保存的会话是按 IP 连的IP 一变就连不上所以务必改成静态 IP。先确认虚拟网段。在 VMware 里打开「编辑」菜单下的「虚拟网络编辑器」选中 VMnet8 那一行看下面的子网地址通常是192.168.x.0点开 NAT 设置能看到网关地址一般是192.168.x.2。记下这两个值。然后进虚拟机编辑网卡配置文件。CentOS7 的网卡名一般是ens33先确认一下ip addr ls /etc/sysconfig/network-scripts/文件名类似ifcfg-ens33。用 vi 打开它改成下面这样TYPEEthernet BOOTPROTOstatic NAMEens33 DEVICEens33 ONBOOTyes IPADDR192.168.100.128 PREFIX24 GATEWAY192.168.100.2 DNS1192.168.100.2 DNS2114.114.114.114几个参数逐个说清楚。BOOTPROTOstatic表示不用 DHCP用静态地址。ONBOOTyes是开机自动启用网卡这一行如果原来是 no必须改否则每次重启网卡都是关的。IPADDR要选在虚拟网段内、且不在 DHCP 自动分配池范围内的地址比如网段是 192.168.100.0网关是 .2那你就用 .128 这种偏后的地址冲突概率小。PREFIX24等价于子网掩码 255.255.255.0老写法是NETMASK255.255.255.0两种都认。GATEWAY填刚才记下的 NAT 网关地址填错了就上不了网。DNS1可以直接填网关VMware 的 NAT 服务会帮忙转发解析想更保险就再加一个公共 DNS 作为备用。保存退出重启网络服务systemctl restart network如果这一步报错先看配置文件有没有拼写错误尤其是引号、空格和大小写。CentOS7 是 systemd 管理系统服务的这个network服务就是常说的超级守护进程体系下的一环用systemctl status network能看到详细的状态和报错原因。另外 CentOS7 同时存在 NetworkManager如果两边打架可以先把 NetworkManager 停掉再操作避免配置被覆盖。3.3 连通性验证与开机自启配完不要急着开 Xshell先在虚拟机里自己验证一遍。顺序是先 ping 网关再 ping 外网 IP最后 ping 域名。三步都通说明网络层、路由层、DNS 层都没问题。ping -c 4 192.168.100.2 ping -c 4 114.114.114.114 ping -c 4 www.baidu.com如果第一步行第二步行那是 DNS 没配好检查DNS1是不是写对以及/etc/resolv.conf里有没有被 NetworkManager 覆盖成别的值。如果网关都 ping 不通那问题在网卡配置或者 VMware 的虚拟网络设置上回到上一节重新核对网段。确认 SSH 服务是开着的并且开机自启systemctl status sshd systemctl enable sshd ss -lntp | grep 22ss输出里能看到0.0.0.0:22或者:::22就说明 SSH 在监听所有网卡Xshell 能连进来了。如果只看到127.0.0.1:22那说明配置里限制了监听地址需要改/etc/ssh/sshd_config里的 ListenAddress。注意CentOS7 默认开启 firewalld。如果前面都通还是连不上 22 端口检查防火墙firewall-cmd --list-ports必要时放行或者临时关闭验证。生产环境当然要保留防火墙练习环境为了排错可以先关掉确认链路通了再逐步加回来。4. Xshell 侧的连接与长期使用配置4.1 第一个会话怎么建打开 Xshell新建会话。名称写个好认的比如centos7-nat。协议选 SSH主机填虚拟机那个静态 IP端口 22。左侧的「用户身份验证」里方法选 Password用户名填 root 或者你创建的普通用户密码填对应密码。第一次连接会弹出一个主机密钥确认提示这是 SSH 的正常机制确认保存即可之后就不会再弹。连接成功后你会看到命令行提示符。这时候先敲ip addr和whoami确认一下连的确实是那台机器别连错了。确认无误后右键会话可以复制、重命名、建分组机器多了之后分组管理能省很多事。4.2 中文显示、回滚缓冲与日志默认情况下 Xshell 一般不会出问题但如果你的终端里中文变成方块或者乱码基本就是编码不匹配。在会话属性里找到「终端」这一项编码选 UTF-8同时确认虚拟机里的 locale 也是 UTF-8echo $LANG locale如果输出是en_US.UTF-8或者zh_CN.UTF-8就没问题如果是什么POSIX就要改/etc/locale.conf。Xshell 这边字体建议选等宽字体英文用 Consolas 或者 Cascadia Code中文用微软雅黑或者更纱黑体两者搭配起来看着舒服。字号别太小长时间盯着 10 号字眼睛会废。回滚缓冲默认一般是几千行日志输出多的场景建议调到 30000 行以上翻历史输出的时候不用一直往上滚。路径在会话属性里的终端设置项下。日志功能很多人不用但我强烈建议开。会话属性里的「日志记录」可以设置每次连接自动把终端内容写到一个文件文件名带上时间和主机名。这样命令执行失败、配置改错的时候翻日志比靠记忆靠谱得多。尤其是做实验记录日志文件直接就是你的操作台账。4.3 用密钥登录替代密码密码登录方便但久了会有两个问题一是密码复杂了自己记不住二是每次连都要输。用公钥登录可以免密也更安全。在 Xshell 的「工具」菜单里找到用户密钥管理者新建一个密钥对类型选 RSA位数选 2048 以上按提示生成。生成过程会要求设置一个密钥保护密码可以留空也可以设一个。然后导出公钥得到一串以ssh-rsa开头的文本。在虚拟机里执行mkdir -p ~/.ssh chmod 700 ~/.ssh vi ~/.ssh/authorized_keys把公钥粘贴进去保存后设权限chmod 600 ~/.ssh/authorized_keys权限这一步不能省。SSH 对权限检查很严格如果authorized_keys是 644 或者.ssh目录是 755服务端会直接拒绝使用这个密钥而且日志里的报错很不直观容易卡很久。回到 Xshell在会话的用户身份验证里方法改成 Public Key选中刚才生成的密钥连接测试。成功后就可以把密码认证关掉了。提示新版 Xshell 出于安全考虑不再提供明文导出已保存密码的功能。如果你之前把一堆密码存在会话里别指望能找到导出入口。正确做法是统一换成公钥登录或者用会话文件夹整理好备注密码交给专门的密码管理工具。想靠某个功能把老会话里的密码读出来这条路走不通早点换方案。5. 连不上的时候怎么查完整排查路径5.1 按层排查的顺序和命令连不上别乱试按层往下走每层确认完了再进下一层效率高得多。第一层虚拟机本身是否正常运行。看 VMware 里那台机器的状态是不是关机了、挂起了或者卡在启动界面。挂起状态是连不上的必须恢复运行。第二层虚拟机的 IP 是否是你配置的那个。在控制台里跑ip addr看 ens33 有没有拿到 IP是不是你设的静态地址。如果显示state DOWN说明网卡没启用检查ONBOOTyes有没有生效。第三层宿主机能不能 ping 通虚拟机。在 Windows 里打开命令提示符ping 192.168.100.128。通不了说明虚拟网络有问题去看虚拟网络编辑器点「还原默认设置」重建虚拟网卡通常能解决大部分莫名其妙的故障。第四层端口是否可达。在 Windows 上执行telnet 192.168.100.128 22如果不通回到虚拟机里看ss -lntp和防火墙。第五层账号密码或者密钥是否正确。这一步错了 Xshell 会明确报认证失败反而最好判断。5.2 典型故障速查表现象最可能的原因处理办法连接超时无任何提示网络模式不对或虚拟网卡被禁用检查虚拟网络编辑器还原默认设置连接被拒绝SSH 服务未启动或端口未监听systemctl start sshd检查ss -lntp认证失败用户名密码错或密钥权限不对核对密码检查.ssh目录和文件权限能连上但很快断开IP 冲突或网卡配置被覆盖换一个 IP检查 NetworkManager 冲突中文显示为方块编码不匹配Xshell 设 UTF-8检查系统 locale装完系统 yum 报错官方源已停止维护替换为镜像站的归档源地址克隆后连不上MAC 地址变了网卡名或配置失效重新生成 MAC改网卡配置文件名和内容虚拟机重启后 IP 变了仍在使用 DHCP改成静态 IP 配置这张表是我自己踩坑攒下来的遇到问题先在里面找一遍能省下大量搜索时间。注意克隆虚拟机之后出现的网络问题特别典型。克隆会生成新的 MAC 地址而 CentOS7 的网卡配置文件和 udev 规则里可能还绑着旧 MAC导致新网卡被识别成ens34而配置文件还是ens33。处理办法是编辑/etc/sysconfig/network-scripts/ifcfg-ens33更新 MAC 相关项或者在虚拟机设置里手动把 MAC 改回原来的值。改完记得把网卡配置里的 UUID 一行也删掉或者重写重复的 UUID 也会导致网络起不来。6. 效率扩展快照、克隆、文件传输与多会话6.1 快照和克隆的正确使用姿势快照是虚拟机最值钱的功能。装完系统、配好网络、装完常用软件这时候拍一个快照命名成「干净基线」。之后不管你把系统折腾成什么样一条命令就能回退回来。我自己一般是三层快照装完系统一层配好网络和源一层装完开发环境一层。这样回退的粒度刚好不会为了改错一个配置就退回解放前。克隆适合搭多机环境。做集群实验、主从复制这类需要两三台机器的场景克隆比重新装快得多。克隆的时候选「创建完整克隆」而不是「链接克隆」完整克隆是独立的一份删了源机器也不影响链接克隆省空间但依赖源机器源机器一动克隆体就废了。克隆完记得三件事改主机名、改静态 IP、处理前面说的 MAC 和 UUID 问题。三件事做完一台全新的机器就能直接用了。6.2 文件传输和主机访问虚拟机服务Xshell 本身不带文件传输但它配套的 Xftp 可以直接用同一个会话信息连过去左边本地右边远端拖拽就能传文件。另一个办法是用scp命令scp -r ./project root192.168.100.128:/opt/反过来从虚拟机拉文件到本地也一样把源和目标调换即可。如果宿主机想访问虚拟机里跑的服务比如 80 端口的网页或者 8080 的应用NAT 模式下需要在虚拟机设置里做端口转发在虚拟网络编辑器的 NAT 设置里添加一条映射把宿主机的某个端口映射到虚拟机的对应端口。这样浏览器里访问http://localhost:映射端口就能打开虚拟机里的服务。桥接模式下更简单直接用虚拟机的 IP 加端口访问就行不需要转发。另外提一句虚拟机和宿主机的共享文件夹也是常用功能。在虚拟机设置里开启共享装好 VMware Tools 之后虚拟机里就能挂载到宿主机的目录本地写的代码可以直接在虚拟机里跑改完保存刷新即可比来回传文件顺手很多。7. 几个日常使用的小技巧cd -可以在最近两个目录之间来回跳比敲一长串路径快得多。pushd和popd配合使用可以维护一个目录栈在几个固定目录之间切换时非常好用。这些命令在 Xshell 里和本地终端完全一样用熟了能省下大量时间。Xshell 支持同时对多个会话发送相同命令做多机配置对比的时候很有用。选中会话标签开启「发送到所有会话」敲一次命令几台机器同时执行输出并排看差异一目了然。快捷键方面CtrlL清屏CtrlR反向搜索历史命令Tab补全路径这三个组合起来基本能覆盖大部分高频操作。Xshell 还可以自定义快捷键把常用的长命令绑上去比如一键查看端口监听状态长期下来效率提升很明显。登录后的第一件事我习惯是从普通用户切到 root 之前先确认自己在哪台机器上hostname和ip addr各看一眼。手上有好几台环境的时候这一步能避免在错误的机器上执行危险命令代价只有两秒钟。我个人在实际操作中的体会是这套环境的稳定性其实主要取决于有没有把网络配成静态的、有没有把关键节点拍成快照。这两件事做了剩下的问题基本都能在两分钟内定位这两件事没做那每次重启虚拟机都可能变成一次重新排查。所以别嫌麻烦装完系统就把静态 IP 和基线快照一次性弄好后面能省下的时间远超这点投入。