作为一名长期从事Linux系统管理的工程师,我经常需要在各种环境中快速部署和测试系统。今天要分享的是在VMware Workstation上部署RHEL9虚拟机并进行基础操作的完整流程,这个实验不仅适合初学者入门,对有经验的运维人员也有参考价值。
在VMware中创建RHEL9虚拟机时,有几个关键配置需要特别注意:
虚拟机硬件配置:
安装源配置:
bash复制# 如果是通过ISO文件安装,确保校验SHA256值
sha256sum RHEL9.x-x86_64-dvd.iso
分区方案:
注意:RHEL9默认使用XFS文件系统,相比ext4在处理大文件时性能更优,这也是企业环境的常见选择。
系统安装完成后,首先需要做的几件事:
注册订阅(如果使用官方源):
bash复制subscription-manager register --username <your_username> --password <your_password>
subscription-manager attach --auto
更新系统:
bash复制dnf update -y
安装基础工具包:
bash复制dnf install -y vim-enhanced bash-completion net-tools wget curl
在RHEL9中安装SSH服务的完整流程:
安装OpenSSH服务端:
bash复制dnf install -y openssh-server
配置SSH服务(关键安全设置):
vim复制vim /etc/ssh/sshd_config
# 修改以下参数:
Port 2222 # 修改默认端口
PermitRootLogin no # 禁止root直接登录
PasswordAuthentication no # 推荐使用密钥认证
ClientAliveInterval 300 # 客户端活跃检查
防火墙配置:
bash复制firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --reload
SELinux策略调整(如果修改了默认端口):
bash复制semanage port -a -t ssh_port_t -p tcp 2222
实操心得:生产环境中务必禁用密码登录,使用密钥认证。生成密钥对时建议使用ed25519算法,比RSA更安全高效:
bash复制ssh-keygen -t ed25519 -C "your_email@example.com"
从Windows/macOS客户端连接时,有几个实用技巧:
保持连接持久化:
bash复制ssh -o ServerAliveInterval=60 user@host -p 2222
使用配置文件简化连接:
在~/.ssh/config中添加:
code复制Host myrhel9
HostName 192.168.1.100
User myuser
Port 2222
IdentityFile ~/.ssh/id_ed25519
之后只需执行ssh myrhel9即可连接
文件传输:
bash复制# 从本地复制到远程
scp -P 2222 local_file myrhel9:/path/to/dest
# 从远程复制到本地
scp -P 2222 myrhel9:/path/to/file local_dest
基础的mkdir和touch命令看似简单,但实际工作中有些高阶用法很实用:
批量创建目录结构:
bash复制mkdir -p project/{src,doc,test/{unit,integration},log}
这会创建如下结构:
code复制project/
├── doc
├── log
├── src
└── test
├── integration
└── unit
带时间戳的文件创建:
bash复制touch "log_$(date +%Y%m%d_%H%M%S).log"
权限设置最佳实践:
bash复制mkdir -m 750 shared_dir # 创建时直接设置权限
chmod g+s shared_dir # 设置SGID保持组权限
使用花括号扩展:
bash复制touch file{1..10}.txt # 创建file1.txt到file10.txt
结合find批量操作:
bash复制find /opt/tmp -name "*.txt" -exec chmod 644 {} \;
文件内容快速查看:
bash复制head -n 5 /var/log/messages # 查看前5行
tail -f /var/log/secure # 实时监控日志
实验中的基础vim操作之外,这些技巧能显著提升编辑效率:
快速导航:
gg:跳到文件首行G:跳到文件末尾50G:跳到第50行Ctrl+o:返回上一个位置Ctrl+i:前进到下一个位置高效编辑:
vim复制3dd # 删除3行
yyp # 复制当前行并粘贴
>> # 向右缩进
<< # 向左缩进
可视化模式:
v:字符可视化V:行可视化Ctrl+v:块可视化(适合列编辑)多文件编辑:
vim复制:e newfile.txt # 打开新文件
:ls # 查看缓冲区列表
:bn # 切换到下一个缓冲区
:bp # 切换到上一个缓冲区
宏录制:
vim复制qa # 开始录制宏到寄存器a
...执行操作...
q # 停止录制
@a # 执行宏
10@a # 执行10次宏
插件管理(Vim8+原生支持):
bash复制# 创建插件目录
mkdir -p ~/.vim/pack/plugins/start
# 安装插件示例(如nerdtree)
git clone https://github.com/preservim/nerdtree.git ~/.vim/pack/plugins/start/nerdtree
当SSH连接出现问题时,可以按照以下步骤排查:
服务状态检查:
bash复制systemctl status sshd
journalctl -u sshd -n 50 --no-pager
端口连通性测试:
bash复制telnet 192.168.1.100 2222 # 测试端口是否开放
详细调试模式:
bash复制ssh -vvv user@host # 显示详细连接过程
磁盘空间排查:
bash复制df -h # 查看磁盘使用情况
du -sh /* # 查看各目录大小
ncdu / # 交互式磁盘分析(需安装)
文件权限修复:
bash复制# 递归修复目录权限
find /path -type d -exec chmod 755 {} \;
# 递归修复文件权限
find /path -type f -exec chmod 644 {} \;
inode耗尽问题:
bash复制df -i # 查看inode使用情况
恢复交换文件:
vim复制vim -r filename # 恢复未保存的修改
编码问题处理:
vim复制:set fileencoding=utf-8 # 强制设置编码
:e ++enc=gbk # 用指定编码重新加载
大文件处理优化:
vim复制:set synmaxcol=200 # 限制语法高亮列数
:set lazyredraw # 延迟重绘
在实际工作中,我发现很多问题都是由于权限配置不当或服务参数错误导致的。建议每次修改关键配置前都做好备份,并使用ls -Z查看SELinux上下文,用getenforce检查SELinux状态。对于Vim编辑器,掌握:help命令查看内置文档能解决大部分使用问题。