很多做运维、网络、软件测试的朋友都绕不开这样一个组合:本地跑一个 VMware 虚拟机装 Red Hat Enterprise Linux,然后用 Xshell 这类 SSH 终端工具远程操作它。原因是现实里你根本不会天天坐在服务器屏幕前,SSH 远程登录才是常态,虚拟机里直接敲命令、复制代码、开多个终端窗口,效率也确实比不上 Xshell 这种专门工具。把 VMware 17、RHEL 8、Xshell 三样串起来,等于提前演练了一遍真实工作的操作路径。
这篇文章不是照搬官方手册,是我实测过一遍的完整流程:从 VMware Workstation Pro 17 的安装、虚拟硬件参数分配,到 RHEL 8 系统安装里的软件选择与分区,再到网络模式选型、sshd 服务开启,最后用 Xshell 建立 SSH 会话并解决各种连接异常。零基础可以照着做,有经验的人可以直接跳到第 4、5 节看关键配置,第 6 节的问题速查表建议收藏。
1. 环境准备:VMware 17、RHEL 8 ISO 与 Xshell 怎么选
1.1 VMware Workstation Pro 17 的版本选择与安装细节
VMware Workstation 目前主流版本就是 Workstation Pro 17,对 Windows 10/11 64 位支持良好,个人非商业用途现在也可以直接使用官方版本。装之前先去任务管理器的“性能 → CPU”里确认虚拟化状态是“已启用”,如果显示“已禁用”,需要进 BIOS 打开 Intel VT-x 或 AMD-V,这一步不做,后面虚拟机要么起不来,要么运行极慢。
安装过程基本是下一步下一步,但有两个选项建议处理:一是勾选“安装增强型键盘驱动程序”,这个驱动用于虚拟机里捕获键盘输入,涉及快捷键场景时更稳定;二是安装路径尽量别放 C 盘默认位置,VMware 程序加虚拟机文件动辄几十 G,放数据盘后面省心。装完以后到“编辑 → 首选项”里把虚拟机默认位置改到你计划存放虚拟机的目录,避免每次新建虚拟机都要手动改路径。
注意:如果你之前用过 VMware Workstation 15/16,17 的界面变化不大,但部分按钮名称有调整。网上很多教程还是老版本截图,流程以你本机界面为准。
1.2 RHEL 8 ISO 镜像从哪里拿
RHEL 是商业发行版,不像 CentOS 那样随便找个镜像站就能下。正规路径是去 Red Hat 官网注册一个开发者账户,选择免费的 Developer Subscription 开发者订阅,之后就能合法下载 RHEL 8 的 ISO 镜像,也可以走 60 天评估版。学习用途建议直接用开发者订阅,至少系统能正常安装,后续还能用官方源更新补丁。
下载时注意选 DVD ISO 而不是 Boot ISO。DVD ISO 是完整安装介质,大约 4 到 6 GB,虽然大,但不需要安装时联网再拉包;Boot ISO 只有几百 MB,安装过程中需要从网络仓库下载软件包,网络质量不好时很容易卡住。如果你手头已经拿到 RHEL 9.x 的 ISO(比如 9.2),安装流程和 RHEL 8 高度一致,只是软件源名称和个别界面文字不同,本文所有关键步骤在 RHEL 9 上同样适用。
1.3 Xshell 安装与杀毒软件干扰
Xshell 是 NetSarang 出的终端模拟器,平时最常用来做 SSH 连接,也支持 Telnet、Serial 串口等协议。个人学习用途可以去官网下家庭/学校免费版,功能足够日常用。安装包体积不大,但装的时候容易被 360、Windows Defender 误报,原因通常是它的“凭据管理器”组件涉及密码存储。处理方法:从官网正规渠道下载后,在杀毒软件里加白名单再解压安装,不要从各种“下载站”拿加了私货的版本。
安装完成第一次启动会有欢迎界面,家庭版没有评估限制。我建议顺手把界面语言、字体调一下:菜单“工具 → 选项 → 查看”,把字体改成 Consolas 或等宽字体,编码选 UTF-8,后面中文不会乱码。这一步很多人忽略,直到连上服务器看到中文全变乱码才回头改。
2. VMware 17 中新建虚拟机:硬件参数与常见启动问题
2.1 新建向导的关键选项
启动 VMware Workstation Pro 17,点“创建新的虚拟机”,建议选“稍后安装操作系统”——先建好硬件,再加载 ISO 启动。这样方便中途换镜像,也避免虚拟机向导自动识别带来的兼容问题。客户机操作系统选择“Linux → Red Hat Enterprise Linux 8 64 位”。如果你的版本下拉里没有 8,选 RHEL 7 64 位也可以,区别只是默认硬件兼容级别,对安装 RHEL 8 没有实际影响。
虚拟机名称和位置写成 RHEL8-Dev 这种可辨识的名字,位置放在 1.1 里改过的默认目录。固件类型选 BIOS 还是 UEFI?RHEL 8 两个都支持,不过在 VMware 上建议直接 UEFI,兼容性更接近现代服务器,后续如果要装其他系统也不用改。磁盘类型选 NVMe 或 SCSI 都行,默认选项通常足够。
2.2 CPU、内存、磁盘给多少才合理
这里给一个实测下来的基准配置,不是官方最低要求,而是兼顾性能和稳定:
| 参数 | 最低要求 | 推荐配置 | 备注 |
|---|---|---|---|
| 内存 | 2 GB | 4 GB | 最小化安装 1 GB 够,带图形界面建议 4 GB |
| CPU | 2 核 | 2-4 核 | 核太多反而拖慢宿主机 |
| 磁盘 | 20 GB | 40-60 GB | 建议单个 vmdk 文件,方便克隆迁移 |
| 网络 | NAT | NAT | 初期测试 NAT 最省心 |
为什么推荐 4 GB 内存?RHEL 8 如果选了带图形界面的软件组合,2 GB 会有明显卡顿。SSH 操作虽然用不到图形界面,但系统服务、日志、软件包安装都需要内存。磁盘给 60 GB 不是浪费,后面装 Docker、数据库、中间件,日志一多很容易占满。虚拟机设置里还有两个容易被忽略的选项:一是“虚拟化引擎”勾选“虚拟化 Intel VT-x/EPT 或 AMD-V/RVI”,二是显示设置里关掉“3D 图形”加速,内存和 CPU 开销都会降下来。
2.3 启动阶段常见的异常
最多见的异常是启动虚拟机时提示“VMware Workstation 无法连接到虚拟机”,或者打开后黑屏、一直停在启动画面。这类问题 90% 和 VMware 的服务或权限有关:按 Win+R 输入 services.msc,把 VMware Authorization Service、VMware DHCP Service、VMware NAT Service 全部启动,尤其是 Authorization Service 没运行,几乎必然报无法连接到虚拟机。如果服务正常还报错,用管理员身份重新运行 VMware,并检查虚拟机的 vmx 文件所在目录是否有写入权限。
还有一个隐蔽坑:Windows 的 Hyper-V 或“基于虚拟化的安全性”和 VMware 冲突。这个在开启了 WSL 2、Hyper-V 的机器上经常出现,现象是 VMware 启动虚拟机时报“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”,或者直接蓝屏。解决方向是关闭 Hyper-V 功能,或关闭内核隔离中的内存完整性,但如果你必须同时用 WSL 2,就得在 Windows 启动引导里做切换。
3. RHEL 8 系统安装实战:软件选择分区与首次配置
3.1 启动 ISO 后的初始化选项
虚拟机设置里把 CD/DVD 指向 RHEL 8 的 ISO,勾选“启动时连接”,开机后自动进入安装引导。第一屏是“Install Red Hat Enterprise Linux 8”和“Test this media & install”,直接选第一项回车。如果你发现鼠标键盘不响应,检查虚拟机的“硬件 → USB 控制器”,改成 USB 3.1 兼容,并勾选“自动连接”。
语言选择建议直接 English(United States)。不是非要显摆英语,而是 RHEL 的中文翻译和字符集在后续配置里偶尔会有不可预料的坑,英文安装环境最稳。安装界面顶部有几个带叹号的配置项,全部处理完才能点“Begin Installation”。
3.2 软件选择与磁盘分区
点“Software Selection”,如果只是当服务器用,选“Server”或最小化安装“Minimal Install”。这台机器主要是通过 Xshell 远程操作,不需要图形界面,选 Minimal 最合适:省内存、启动快、干扰服务少。如果你偶尔想进图形界面,选“Server with GUI”,但内存要给到 4 GB 以上。
“Installation Destination”里选“Automatic”自动分区,RHEL 8 默认会划分 boot、root、home、swap 等分区,对新手友好。想手工分区也可以,至少分三个:/boot 1 GB,swap 给 2-4 GB 或与内存等大,/ 分剩余全部。有一个经验:不要把 /home 单独分太大。测试环境经常把用户目录当数据盘用,但容器、日志、临时安装包全在 / 下面,/ 分小了分分钟爆盘。磁盘加密和 LVM 在纯学习环境可以关掉,减少可变因素。
3.3 ROOT 密码、创建用户与首次重启
点“Root Password”设置 root 密码,再点“User Creation”创建一个普通用户。RHEL 8 默认策略要求密码足够复杂,太简单会提示“弱密码”,学习环境可以强制使用,但建议密码混入大小写和数字。创建用户时勾选“Make this user administrator”,这样该用户可以 sudo,日常操作不用切 root。
点“Begin Installation”,进度条走完后点“Reboot”。重启后进入第一次启动配置:有图形界面会让你接受许可协议、设置网络主机名;没有图形界面的话,直接用 root 或刚才创建的用户登录,然后输入ip addr看网卡是否拿到 IP。到这里系统安装基本结束,接下来才是重头戏——SSH 能不能连进来,取决于网络和服务配置。
4. 网络模式选型与 SSH 服务配置
4.1 NAT、桥接、仅主机到底怎么选
VMware 虚拟机默认提供三种网络模式,很多连接不上的情况是模式选错。NAT 模式下虚拟机通过宿主机共享一组 IP 上网,对外部网络隐藏,宿主机和虚拟机之间默认互通,这是 VMware 提供的 VMnet8 网段;桥接模式让虚拟机直接挂在物理局域网上,获得一个和宿主机同网段的 IP,局域网内其他设备也能访问;仅主机模式相当于一个内部局域网,虚拟机只能和宿主机通信,不能上网。
学习阶段我推荐 NAT,原因有三:不用关心路由器 DHCP 地址池,不会和其他设备冲突;虚拟机的对外访问能力完整,yum 更新、下载软件包都没问题;宿主机访问虚拟机通过 VMnet8 网段,IP 可控。如果你要模拟服务器被局域网其他机器访问,比如测试 Web 服务,那才需要换成桥接。用桥接时注意虚拟机网卡要对应正确的物理网卡,笔记本用无线网卡时桥接经常不稳定。
4.2 给 RHEL 8 配置固定 IP 的两种方式
安装时 DHCP 自动分配的 IP 每次重启可能变,SSH 连接要稳定,给虚拟机配一个固定 IP 才是正解。RHEL 8 默认用 NetworkManager 管理网络,推荐用 nmcli 命令行来配。先查看网卡名:
nmcli connection show # 查看连接名,一般是 ens33 或 ens160 ip addr # 确认当前网段,NAT 模式一般是 192.168.xxx.x以 NAT 网段 192.168.20.0/24 为例,打开 VMware“编辑 → 虚拟网络编辑器”,确认 VMnet8 的子网就是 192.168.20.0,网关一般是 192.168.20.2。然后配置静态 IP:
nmcli connection modify ens33 ipv4.addresses 192.168.20.100/24 nmcli connection modify ens33 ipv4.gateway 192.168.20.2 nmcli connection modify ens33 ipv4.dns 8.8.8.8 nmcli connection modify ens33 ipv4.method manual nmcli connection up ens33不习惯命令行的话,也可以直接编辑/etc/sysconfig/network-scripts/ifcfg-ens33,在文件里写BOOTPROTO=none、IPADDR=192.168.20.100、PREFIX=24、GATEWAY=192.168.20.2、DNS1=8.8.8.8,然后nmcli connection reload再nmcli connection up ens33。两种方式本质都是写同一套配置,但 nmcli 命令行顺手以后,批量配置多台虚拟机时效率高得多。
4.3 开启 sshd 并放行防火墙
RHEL 8 装完默认可能没启动 SSH 服务,或者防火墙没放行。这一步漏了,Xshell 那边只会看到连接超时。先确认 sshd 是否安装:
systemctl status sshd # 没安装则运行 yum install -y openssh-server systemctl enable --now sshd # 设置开机自启并立即启动然后是防火墙。RHEL 8 使用 firewalld,默认对入站连接限制严格。开启 22 端口:
firewall-cmd --permanent --add-service=ssh firewall-cmd --reload firewall-cmd --list-services # 确认输出里有 sshSELinux 一般不用动,它对 sshd 默认放行。不要一上来就关 SELinux,RHEL 环境里它保护着系统,普通 SSH 登录完全不受影响。确认配置完成后,先在虚拟机内部测试ssh localhost或ssh 127.0.0.1,能通再回宿主机尝试,这一步能帮你区分是服务问题还是网络问题。
5. Xshell 连接 RHEL 8 的完整实操步骤
5.1 新建会话与关键参数
打开 Xshell,点工具栏的“新建”,会话属性里几个关键项看清楚。协议选 SSH,主机填虚拟机的 IP 地址,端口 22,名称随意。右侧“类别”里的“连接 → 认证”,建议选 Password 密码认证,“用户身份验证”里填用户名,比如 root 或前面创建的普通用户,也可以先不填,连接时再输入。
建立会话前,先确认宿主机到虚拟机网络通:打开 Windows 的 CMD 或 PowerShell,ping 192.168.20.100。不通就回头检查 4.2 的 IP 配置、VMware 的 NAT 服务是否运行。还有一个容易踩的坑:Xshell 第一次连接会提示“该主机密钥尚未缓存”,这是正常现象,Xshell 会展示服务器的指纹,点“接受并保存”,之后该主机的指纹就进入 Xshell 的已知主机列表,不会再问。
5.2 登录验证与会话保存
接受主机密钥后,输入密码即可登录。登录成功后你会看到 RHEL 的命令行提示符,比如[root@localhost ~]#。这时候输入whoami、hostname验证身份和主机名。为了避免 IP 或端口变化后重复建会话,在会话属性里把会话保存下来,Xshell 左侧会话管理器里右键“属性”,以后直接双击进入。
前面创建了普通用户并且勾选了管理员权限的话,建议平时用普通用户登录,需要管理员权限时用sudo -i或sudo 命令。这比一直拿 root 跑要安全,尤其是后面要装软件、改配置,对命令不熟悉时 root 权限误删文件后悔都来不及。Xshell 支持多标签页会话,Ctrl+Tab 切换多个连接,批量管理多台虚拟机时非常方便。
5.3 连接后的实用设置:编码、字体与终端效果
连接上以后,很少有人第一时间设置终端外观,但这对长期使用影响很大。打开“工具 → 选项 → 查看”,字体选等宽字体,字符编码保持 UTF-8,配色方案选一个看着不累的。RHEL 8 系统语言如果是英文,中文文件名显示为转义序列,不建议为了强显中文去改系统 locale,除非确定业务需要。
Xshell 里有一个高频误操作:在命令行里按方向键发现光标不动,想“回到上一级目录”却输不对命令。其实cd ..返回上一级,cd ~回用户主目录,cd -回上一次所在目录,这几个基础命令建议先记牢。另外在 vi/vim 里编辑时,如果发现退格键没反应,多半是 TERM 环境变量问题,登进去执行export TERM=xterm再试。
6. 常见问题排查与避坑速查表
6.1 网络不通与连接超时怎么查
SSH 连接超时,优先按这三个层次排查:宿主机 ping 虚拟机通不通;不通就检查 VMware 虚拟网络编辑器里 VMnet8 的网段和虚拟机 IP 是否一致,以及 VMware NAT 服务是否在运行;通的话继续检查虚拟机内 sshd 是否监听 22 端口,用ss -tlnp | grep 22看状态。如果 ss 输出里没有 sshd 监听,大概率服务没启动,回到 4.3 节处理。
有一个我在多台电脑上遇到的坑:安装了某些“安全类软件”后,Windows 防火墙会额外拦掉 VMware 的 VMnet8 网段通信,现象是虚拟机自己能上网,宿主机 ping 却丢包。解决方法是到 Windows Defender 防火墙的高级设置里,确认 VMware NAT Service 和 VMware Authorization Service 的入站规则是允许状态,或者临时关闭对这些程序的拦截来验证。还有一种低级错误:虚拟机 IP 和宿主机 IP 不在同一理解错位的网段,比如 NAT 模式看成桥接,把 VMnet8 的网段当成物理局域网网段,这种只能回头重新梳理网络拓扑。
6.2 认证失败与公钥密钥相关
Xshell 报“认证失败”但密码肯定没输错,这个多半是账户被锁、密码过期或者 sshd 配置限制。先看/var/log/secure日志里的 sshd 记录,确认是不是多次失败触发锁定。另一个常见场景:你在 Xshell 的“认证”设置里选了“Public Key”,但私钥和服务器上的公钥对不上,自然失败。第一种情况把认证方式切回 Password 即可;第二种情况需要检查~/.ssh/authorized_keys里的公钥内容是否和客户端私钥匹配。
这里顺带说下很多开发同学遇到的问题“SSH 认证失败 git”,本质和上面是同一类错误链:客户端没有正确的密钥、服务端没有对应的 authorized_keys、或者 SSH 代理里缓存了错误密钥。排查顺序:ssh -vT user@host看细节,重点看Offering public key和Permission denied (publickey)这一段输出。Vmware 虚拟机里的 SSH 认证失败排查思路完全一致,无非多了一个“网络是否能通”的前置判断。
6.3 Xshell 使用中的小坑
Xshell 7 和 8 界面有细微差异,8 的会话管理更现代化,7 更经典,但对 SSH 功能没有本质区别。装不上的情况,除了杀毒软件误报,还可能是缺少 VC++ 运行库,去微软官方下最新的 Visual C++ Redistributable 装上再重试。打开“工具 → 用户密钥管理器”可以查看已保存的密码和密钥列表,这就是网上常说的“密码查看器”功能,前提是你在会话属性里勾选了保存密码。
被问得最多的一个问题:“通过 SSH 连接服务器,断开以后 node 服务会停”。Xshell 断开后,会话里的前台进程收到 SIGHUP 信号就会终止,这是 Linux 的正常机制,不是 SSH 坏了。要跑长任务,用nohup 命令 &或者setsid,更专业一点用tmux或screen开一个独立会话,关掉 Xshell 再回来tmux attach就能找回现场。用 systemd 管理的服务则直接systemctl start,完全不依赖终端。
| 现象 | 可能原因 | 处理办法 |
|---|---|---|
| 宿主机 ping 不通虚拟机 | VMnet8 网段不一致 | 打开虚拟网络编辑器确认子网和网关 |
| 虚拟机内部 SSH 本机失败 | sshd 未启动 | systemctl enable --now sshd |
| 连接超时 | 防火墙未放行 | firewall-cmd --permanent --add-service=ssh后 reload |
| 认证失败 | 密码错误或公钥不匹配 | 检查 /var/log/secure,切换 Password 认证 |
| 中文乱码 | 终端编码不对 | Xshell 里设置 UTF-8 编码 |
| 回车后命令没反应 | 键盘类型或 TERM 问题 | export TERM=xterm |
| 断开后任务被杀 | 前台进程收到 SIGHUP | 用 tmux、nohup 或 systemd 托管 |
整套流程跑下来,我的体会是:VMware 17 装 RHEL 8 本身不难,难点永远在网络和服务这两层——网络模式选错、静态 IP 没配好、防火墙没放行、sshd 没启动,任何一个环节断了,Xshell 看到的都是冷冰冰的 timeout。所以别急着把锅甩给工具,按“宿主机能 ping 通虚拟机 → 虚拟机内 SSH 能连自己 → Xshell 能连虚拟机”这个顺序排查,95% 的问题十分钟内能定位。最后分享一个小习惯:所有虚拟机建议装完系统立刻配固定 IP 和主机名,并给 VMware 快照留一个“初始干净状态”,后面折腾坏了随时回滚,比重装省太多时间。