ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

RHEL9虚拟机搭建与SSH远程连接实战:从VMware安装到固定IP配置

RHEL9虚拟机搭建与SSH远程连接实战:从VMware安装到固定IP配置 很多想认真学 Linux 的朋友一开始都会卡在同一个问题上身边没有一台现成的 Linux 机器又不想把主力电脑的系统折腾坏更不想一上来就花钱买云服务器。我自己的经验是最稳妥、也最接近真实工作环境的第一步是在本地虚拟机里装一个 RHEL9把基础操作和 SSH 远程连接跑通。这篇文章就把我在 VMware Workstation 上搭建 RHEL9 虚拟机、配置固定 IP、再通过 SSH 从宿主机连进去的完整过程拆开讲一遍中间会穿插不少我踩过的坑和验证过的细节内容偏向实操适合刚接触 Linux 的同学直接照着做。1. 为什么练习 Linux 我首推 RHEL9 虚拟机1.1 虚拟机隔离了风险却保留了真实手感很多人一开始会在自己的 Windows 电脑上装双系统或者用 WSLWindows Subsystem for Linux。这两种方式我都试过但最后还是回到了“虚拟机 RHEL9”的组合。双系统的问题在于切换麻烦而且系统引导出现问题的时候你连进主力系统的机会都没了。WSL 虽然后来出了 WSL2背后也有虚拟化但它默认没有 systemd很多服务的管理方式和真正的服务器不太一样你在 WSL 里学的东西拿到真实服务器上未必能直接套用。虚拟机的好处是它把整台 Linux 系统隔离在一个虚拟硬件环境中你随便折腾、随便重启、把系统搞挂了删掉虚拟机重新建一台就行宿主机毫发无损。更重要的是虚拟机里的网络行为、服务监听、防火墙规则、SSH 连接这些操作和你在机房、云平台拿到的真实服务器几乎没有区别。对于练习“远程管理”这个核心技能来说虚拟机是成本最低、还原度最高的方式。1.2 RHEL9 在生产环境里的地位决定了它的学习价值RHELRed Hat Enterprise Linux是 Red Hat 出的企业级 Linux 发行版市面上大量公司的生产服务器跑的就是它。它稳定、支持周期长而且围绕它形成的认证体系RHCSA、RHCE几乎是 Linux 运维入行的硬通货。虽然 RHEL 本身不是免费使用的但 Red Hat 官方提供开发者订阅个人注册之后可以免费下载使用这就让我们既能学到一个“跟生产环境一致”的系统又不用掏钱。RHEL9 是 Red Hat 目前的主力版本内核版本是 5.14默认的包管理工具是 dnf网络管理走的是 NetworkManagerSSH 服务默认用的 OpenSSH。这些技术栈和目前主流企业服务器基本一致。你学会了 RHEL9后面再看 CentOS Stream、Rocky Linux、AlmaLinux几乎没什么学习成本因为它们本来就是 RHEL 的兼容重建版。这也是我建议第一套练习环境选 RHEL9 的根本原因学的是平台练的是能力而不仅仅是“装了个能用的 Linux”。2. 环境准备虚拟机软件和 RHEL9 镜像的选择2.1 VMware Workstation 还是 VirtualBox我为什么选前者虚拟机软件市面上主要有 VMware Workstation包括 Pro 和 Player 版本、Oracle VirtualBox还有开源的 QEMU/KVM。对于 Windows 宿主机来说我用得最多的是 VMware Workstation Pro原因有三个虚拟网络配置直观。VMware 的 NAT、桥接、仅主机模式在图形界面里一目了然做网络实验的时候改起来特别方便而且默认的 NAT 模式对新手很友好装上虚拟机就能上网。性能和兼容性稳定。VMware 对 Windows 平台的硬件适配做得成熟磁盘 IO 和网络吞吐都表现不错跑 RHEL9 这种带图形界面的系统也很流畅。快照功能好用。装好 RHEL9 之后拍一个快照后面做实验把系统搞坏了一键恢复非常适合练习场景。VirtualBox 也完全可以而且完全免费。它的 NAT 模式、端口转发配置也不复杂只是在网络模式和性能上偶尔会有一些小脾气。如果你不想折腾也不想在公司或学校遇到 VMware 授权问题VirtualBox 也是不错的选择。我这篇文章主要以 VMware Workstation Pro 为例但操作思路对 VirtualBox 同样适用。2.2 RHEL9 镜像下载避开注册和订阅的坑RHEL 官方镜像下载页面是 Red Hat 的客户门户需要注册账号。注册的时候选择“Red Hat Developer Subscription”这是免费的个人开发者订阅激活之后就可以下载 RHEL9 的 ISO 镜像。镜像分两种一种是 DVD ISO完整安装包体积较大大概 4~5 GB另一种是 Boot ISO最小引导镜像体积很小需要通过网络从仓库拉取安装包。练习建议直接下载 DVD ISO即使你的网络环境不稳定本地就能完成安装不用中途卡在“配置安装源”那一步。下载完成后建议校验一下校验值SHA256避免文件损坏或下载不完整。这一步很多人会跳过但如果你装到一半提示“镜像无法通过完整性测试”就会后悔当时没花一分钟做校验。校验方式也很简单用命令行工具算一下哈希值和官网给的比对一致就行。拿到镜像之后不要急着新建虚拟机。先确认一下你电脑的配置内存至少 8 GB 比较舒服因为 RHEL9 虚拟机要分 2~4 GB 内存磁盘剩余空间至少 30 GBCPU 支持虚拟化技术并且在 BIOS 里打开了 Intel VT-x 或 AMD-V。如果你发现 VMware 或 VirtualBox 提示“无法启用虚拟机平台”多半就是虚拟化开关被关掉了。3. 创建虚拟机和安装 RHEL9 的实操要点3.1 虚拟机硬件参数怎么给不是越大越好在 VMware Workstation Pro 里新建虚拟机时选择“自定义高级”还是“典型”都可以关键是硬件参数。我通常这样配参数推荐值说明CPU2 核RHEL9 最小安装两核就够练习场景不需要多核内存2 GB图形安装建议 4 GB最小安装 2 GB 能用带 GNOME 界面建议 4 GB磁盘20 GB 以上最大存储可设 40 GBRHEL9 完整占 10~15 GB留出后续空间网络NAT 模式方便宿主机访问虚拟机也能上网ISO 镜像指向下载的 RHEL9 DVD稍后启动安装有同学会问为什么磁盘不直接给 100 GB因为后面如果做快照、做克隆文件会变得很大而且磁盘空间分配太大并没有实际用处。20 GB 足够你折腾 Linux 基础、装常用服务、跑一些简单实验了。如果以后不够再给虚拟机扩容也不是难事。3.2 安装过程中的关键选择语言、分区、软件包启动虚拟机选择第一项“Install Red Hat Enterprise Linux 9.x”。接下来安装程序会进入图形化界面。有几个地方需要注意语言选 English 还是中文如果你后续要考 RHCSA 或看官方文档建议选 English因为所有命令、错误提示都是英文练熟了对真机操作有帮助。如果实在不习惯先选中文也行命令行界面不受影响。安装目标进入“Installation Destination”默认会自动分区对初学者来说直接点“Done”用自动配置就行。以后学 LVM逻辑卷管理再做手动分区。RHEL9 默认会用 LVM 和 XFS 文件系统这是企业环境的主流方案直接学它就对了。软件包选择如果你只想练命令行选“Minimal Install”最小安装没有图形界面启动后就是一个命令行登录界面非常节省内存如果你想练习 GNOME 图形界面选“Server with GUI”。我更推荐先装 Minimal Install因为真正的服务器是不会带图形界面的SSH 远程操作才是重点。网络和主机名安装界面里可以点击“Network Host Name”先把网络打开并把主机名改成你喜欢的比如rhel9-lab.local。这里如果开启了网络安装完系统后默认用的是 DHCP 获取 IP后面我们再去改成固定 IP。Root 密码一定要设置一个你能记住的复杂密码。还会让你创建用户建议创建一个普通用户并勾选“让该用户成为管理员Make this user administrator”这样后面可以用sudo不用一天到晚切到 root。安装过程一般 5~10 分钟取决于你的硬件。装完重启之后用 root 或普通用户登录。如果是 Minimal Install登录后只有一个命令行提示符这正合我们意。3.3 安装完先验证三件事网络、DNS、更新登录系统之后先用三条命令做基础检查ip addr show ping -c 3 www.baidu.com cat /etc/os-releaseip addr能看到网卡和 IPping验证外网连通性/etc/os-release确认系统版本。如果你用的 NAT 模式这时候一般就能正常上网了。如果ping不通多半是网卡没有启动或者 DHCP 没拿到地址可以先用ip link set 网卡名 up手动把网卡拉起来再执行dhclient获取地址。这些都是很常见的起步问题。接着更新一下系统sudo dnf update -y如果你是免费开发者订阅默认的软件仓库会自动配置好直接更新就行。这一步能让系统处于最新状态避免后面装软件时报依赖错误。更新过程可能需要几分钟正好可以趁这个时间打开另一台电脑准备 SSH 连接工具。4. 打通网络从 NAT 到固定 IP这一步决定 SSH 能不能连4.1 三种网络模式怎么理解NAT、桥接、仅主机在虚拟机里网络模式直接决定宿主机能不能和它通信。VMware 的三种模式各有用途NAT 模式虚拟机和宿主机共用一个由 VMware 虚拟出来的内部网络通过宿主机的 IP 上网。虚拟机对外访问互联网没问题宿主机要访问虚拟机需要虚拟机有一个内网 IP通常是 192.168.x.x。这是最常用、最推荐的模式因为它不干扰你家里的路由器设置。桥接模式虚拟机直接接入宿主机所在的物理局域网获取和宿主机同一网段的 IP就像网络里的另一台独立电脑。如果你后面要练习 SSH 从其他设备连入虚拟机可以考虑桥接。但它依赖外部网络环境如果换了 WiFi 环境虚拟机的 IP 可能就变了。仅主机模式虚拟机和宿主机之间组成一个私有网络虚拟机不能访问外网。适合做实验环境但因为我们练习 SSH 时有时还要走外网所以后续用得少。练习 SSH 远程连接NAT 模式就够用了。你在这个网络里宿主机就连到虚拟机的 NAT 网卡上SSH 连接完全通畅。记住这一点NAT 模式下虚拟机访问宿主机、宿主机访问虚拟机的 IP属于同一虚拟局域网内通信不需要在 VMware 里做端口转发。4.2 给虚拟机配置固定 IP避免每次连接前查地址DHCP 获取的 IP 每次重启可能变化这对 SSH 连接很不友好。我们要给 RHEL9 配置一个固定的内网 IP。RHEL9 使用 NetworkManager 管理网络推荐用nmcli命令行工具它比编辑配置文件更快捷也更容易理解。先查看当前网卡连接名称nmcli connection show一般会看到一个类似ens160在 VMware 中通常是 ens33 或 ens160的连接NAME 可能叫ens160或Wired connection 1。用nmcli修改它sudo nmcli connection mod ens160 ipv4.addresses 192.168.244.10/24 sudo nmcli connection mod ens160 ipv4.gateway 192.168.244.2 sudo nmcli connection mod ens160 ipv4.dns 114.114.114.114 8.8.8.8 sudo nmcli connection mod ens160 ipv4.method manual sudo nmcli connection down ens160 sudo nmcli connection up ens160上面的 IP 地址要结合你的实际网段。在 VMware NAT 模式下默认网段通常是192.168.x.0网关是192.168.x.2。你可以通过 VMware 的“编辑 - 虚拟网络编辑器”查看 NAT 网段或者直接用ip route看一下当前默认网关ip route show default看到网关后把虚拟机的 IP 设成同网段的一个不冲突地址比如网关是 192.168.122.1那你可以设 192.168.122.50。改完再执行ip addr show确认 IP 是否生效。为什么推荐固定 IP因为后续 SSH 连接、SCP 上传文件、SFTP 调试都需要一个稳定的目标地址。如果你每次连接前都要先在虚拟机里敲ip addr看一眼 IP多跑几次就会觉得很烦。4.3 防火墙和 SELinux最初不知道会让你怀疑人生的两个东西RHEL 默认开启 firewalld 和 SELinux这两个东西在 SSH 没连上时经常是罪魁祸首。先看防火墙状态sudo systemctl status firewalld sudo firewall-cmd --list-all默认情况下firewalld 是允许 SSH 服务端口的因为安装时选择的软件包包括 openssh-server而 RHEL 预置了 ssh 服务规则。但如果你在安装后修改了端口或者误删了规则就要手动放行sudo firewall-cmd --permanent --add-servicessh sudo firewall-cmd --reload另外SELinux 是一个更底层的安全机制。它默认强制Enforcing对 SSH 等常见服务不会拦但如果你改了 SSH 端口SELinux 也会拦这时要用semanage或setsebool调整。练习初始阶段先不要动 SELinux 的 Enforcing 状态保持默认就好。只要 SSH 端口是 22SELinux 不会造成麻烦。5. SSH 远程连接完整配置、客户端工具与首次登录5.1 服务端准备确认 OpenSSH 已启动并设置开机自启RHEL9 默认安装时如果选了 Minimal Install通常已经包含 openssh-server。没有的话先装sudo dnf install -y openssh-server启动并设置开机自启sudo systemctl enable --now sshd sudo systemctl status sshd确认服务状态是 active (running)并监听 22 端口ss -tlnp | grep sshd输出里能看到0.0.0.0:22代表对所有网卡监听。这些都正常服务端就算准备好了。如果你想改掉默认的 22 端口可以编辑/etc/ssh/sshd_config把#Port 22改成其他端口但练习阶段没必要。改端口虽然能提高一点安全性却也可能引入更多问题比如防火墙规则、SELinux 策略都要一起调整初学者很容易卡在“明明服务启动了却连不上”的状态。5.2 客户端工具Windows、Mac、VS Code 三套方案SSH 客户端的选择很多按场景推荐Windows 10/11 自带的 OpenSSH 客户端在 cmd 或 PowerShell 里直接输入ssh命令。比如ssh user192.168.1.10然后输入密码。这是最轻量、最可靠的方式不需要额外安装。PuTTY老牌工具如果你需要保存多个服务器配置PuTTY 的 Session 功能很方便。只是它默认的终端窗口比较朴素中文支持也一般。Mac/Linux 系统直接用系统自带的 Terminal执行ssh命令即可。VS Code 的 Remote-SSH 插件开发环境党的首选。装了 Remote-SSH 之后按 F1 输入 “Remote-SSH: Connect to Host”填userhost就能像操作本地文件一样编辑远程文件跑终端命令。对以后在服务器上写代码、改配置非常有帮助。我这里以 Windows PowerShell 的 OpenSSH 客户端为例连接命令如下ssh rhel-user192.168.244.10第一次连接时客户端会提示确认远程主机指纹host key输入yes并回车。然后输入用户密码就能进入 RHEL9 的命令行。这时候提示符变成[rhel-userrhel9-lab ~]$说明你已经成功远程登录了。如果你用的是 root 用户提示符是#。作为练习建议用普通用户登录需要管理员权限时再用sudo这也符合生产环境的习惯。5.3 连接测试和首次登录的笔记习惯连接成功之后先试几个操作确认 SSH 会话里跑命令和本地终端无异whoami ip addr show cat /etc/redhat-release这组命令能确认当前用户、网络状态和系统版本。此时你的 Windows 宿主机已经可以和 RHEL9 虚拟机建立双向通信了后续的所有运维练习都能通过 SSH 完成不用再打开虚拟机图形界面这对效率提升非常明显。还有一个建议是记录你的连接信息虚拟机名称、IP 地址、用户名、系统版本、安装日期。可以存到一个 Markdown 文件里。别小看这一步做实验超过三个月后你很可能同时开了好几台虚拟机没有记录就只能一台台登进去猜。6. 远程连接失败排查链路从拒绝连接到认证失败6.1 第一步分清是“连不上”还是“认证失败”遇到 SSH 连接不上先看客户端的报错。最常见的几类报错信息含义排查方向connection refused目标机器 22 端口没有响应服务可能没启动或防火墙拦了服务端 sshd、防火墙规则operation timed out网络不可达可能 IP 不对、网段不对虚拟机和宿主机网络连通性Permission denied (publickey,password)认证失败密码不对或用户不存在用户名密码、SSH 配置有一次我遇到connection refused查了半天才发现虚拟机里的 sshd 服务在安装系统时没启动。用sudo systemctl restart sshd解决。而operation timed out多半是 IP 地址写错了或网卡没起来。这两种问题的处理路径完全不同所以第一步一定要判断清楚报错类型。6.2 网络层的排查工具先 ping再检查端口先用ping测试宿主机到虚拟机的连通性ping 192.168.244.10如果 ping 通说明网络层是通的。接着用另一台终端测试端口Test-NetConnection 192.168.244.10 -Port 22这是 Windows PowerShell 的命令如果返回TcpTestSucceeded : True说明 22 端口可达。如果端口不通去服务端检查 sshd 状态再检查firewall-cmd --list-all是否放行 ssh。如果 ping 不通回到 VMware 的虚拟网络编辑器看 NAT 网段是不是和虚拟机实际 IP 对应。还有一个小坑VMware 的 NAT 服务VMware NAT Service偶尔会不工作Windows 服务管理器里确认它处于“正在运行”状态。6.3 认证失败密码、用户、SSH 配置逐一排除如果网络和端口都通但还是报Permission denied按顺序检查用户名是否猜错了。SSH 登录时userIP里的user必须是虚拟机里真实存在的用户可以使用whoami确认自己登录的用户名。密码是否正确。注意 RHEL9 默认使用password认证但如果系统配置了PermitRootLogin noroot 用户就不能直接登录。/etc/ssh/sshd_config里是否明确限制了用户。比如AllowUsers alice bob那其他用户即使密码正确也会被拒绝。有个经验练习时不小心改动过 sshd 配置文件改完没有重启服务也可能导致连接异常。每次修改配置后用sudo sshd -t先验证语法然后再sudo systemctl restart sshd。这样能避免因为写错配置把 SSH 服务搞挂。7. 玩转 SSH密钥登录、免密脚本与安全习惯7.1 生成密钥对一次配置永久免密SSH 除了密码登录还可以用密钥登录而且更安全。在宿主机上生成密钥对ssh-keygen -t ed25519 -C rhel9-lab一路回车即可会在当前用户目录下生成~/.ssh/id_ed25519私钥和~/.ssh/id_ed25519.pub公钥。然后通过ssh-copy-id把公钥复制到虚拟机ssh-copy-id rhel-user192.168.244.10它会要求输入一次密码然后自动把公钥追加到 RHEL9 用户目录的~/.ssh/authorized_keys文件里。之后再用ssh rhel-user192.168.244.10连接直接就能进入系统不再需要密码。这一步做完你会发现写脚本批量操作虚拟机变得非常顺畅。7.2 安全加固把密钥认证改成首选别开 root 直连虽然练习环境不怕被攻击但培养好习惯很重要。在虚拟机的/etc/ssh/sshd_config里做几个小改动PasswordAuthentication no PermitRootLogin no把PasswordAuthentication设为no后只有持有密钥的用户才能登录。如果你之后又需要密码登录临时改回来就行。PermitRootLogin no是禁止直接用 root 通过 SSH 登录日常操作都用普通用户 sudo这样会有审计记录也更安全。改完执行sudo sshd -t sudo systemctl restart sshd注意要先把公钥装好再关闭密码认证否则自己也被锁在外面。最稳妥的做法是保持当前 SSH 会话不断开另开一个新会话验证密钥登录成功再禁用密码认证。7.3 从 SSH 延伸出去SCP、SFTP 与多虚拟机批量管理SSH 不只是远程登录它还是一个安全通道。常用的小工具连带学起来SCP远程复制文件。scp 本地文件 rhel-user192.168.244.10:~/把本地文件传送到虚拟机家目录。SFTP交互式文件管理。用sftp rhel-user192.168.244.10进入然后使用put、get命令上传下载文件。Ansible如果你以后要管理多台服务器Ansible 就是基于 SSH 的自动化工具。它不需要在目标机上装 agent只要目标机能 SSH 即可。等 SSH 用熟了学 Ansible 会非常顺手。到这里你已经把 Linux 练习中最基础的“虚拟机 SSH 远程连接”链路完整打通了。这套环境之后可以用于练习文件管理、用户权限、服务部署、Shell 脚本等所有内容。再分享一个小技巧每次在虚拟机里做完一处配置修改都拍一张 VMware 快照比如叫“Before-sshd-change”。这样后面哪一步操作失误导致系统起不来只要回滚快照就能恢复练习起来的胆量会大很多。
返回列表