马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
写在前面
openEuler 最小化安装之后,很多常用命令是缺的(比如 ifconfig 这类),必须先把 yum 源配好才能装包;同时默认启用的 firewalld 也常常挡着远程连接。本文把这两件事一次讲清楚:本地镜像源怎么配、防火墙怎么开端口、改 SSH 端口时踩的 SELinux 坑怎么绕。
一、yum 源配置(本地 ISO 镜像源)
最小化安装时执行 yum install 报"找不到包/无法解析仓库",基本就是源没配对。如果服务器暂时不能上外网,最稳的办法是拿 openEuler 的 DVD 镜像当本地源。
1.1 配置步骤
第 1 步,上传镜像并创建挂载目录:
mkdir -p /mount/iso
第 2 步,挂载镜像:
mount -o loop ./openEuler-22.03-LTS-x86_64-dvd.iso(镜像上传目录)/mount/iso/
第 3 步,写 yum 仓库配置:
vi /etc/yum.repos.d/openEuler.repo
把原有内容注释掉,只留下面几行:
[openEuler]
name=openEuler
baseurl=file:///mount/iso
gpgcheck=no
enabled=1
baseurl 指向挂载目录,gpgcheck=no 先跳过公钥校验(离线镜像环境里常常没有对应 GPG key,开着会直接失败)。
第 4 步,设开机自动挂载:把挂载写进 /etc/fstab,避免重启后镜像没挂上、源又失效:
/root/openEuler-22.03-LTS-x86_64-dvd.iso /mount/iso iso9660 ro,loop 0 0
第 5 步,验证:
yum -y install net-tools
能装上 net-tools 就说明本地源通了,ifconfig 等命令随之可用。
1.2 有外网时更省事:直接换网络源
如果能连公网,就没必要挂镜像,换成 Euler 官方或 mirrors 的在线源更方便(还能拿到更新):
vi /etc/yum.repos.d/openEuler.repo
# 内容形如:
[openEuler]
name=openEuler
baseurl=https://repo.openeuler.org/openEuler-22.03-LTS/os/x86_64/
gpgcheck=0
enabled=1
yum clean all
yum makecache
换源之后记得 yum clean all + yum makecache 重建缓存,否则用的还是旧索引。
openEuler 默认启用 firewalld 服务。
2.1 状态查看与临时关闭
service firewalld status # 看状态
systemctl stop firewalld.service # 临时停掉(测试环境图省事,生产不建议)
systemctl disable firewalld # 开机不起
生产上不建议直接关防火墙,正确的做法是按需放端口。
2.2 放通服务与端口
firewall-cmd --permanent --add-service=ssh # 放通 SSH(默认一般已加)
firewall-cmd --permanent --add-port=8080/tcp # 放通自定义 TCP 端口
firewall-cmd --permanent --remove-port=8080/tcp # 删除规则
firewall-cmd --reload # 重新加载,永久规则生效必须这步
查看已配置的策略:
firewall-cmd --zone=public --list-ports
firewall-cmd --zone=public --list-all
关键提醒:用 --permanent 加的规则必须跟一次 --reload 才生效,只写不 reload 会让人误以为"规则没配上"。
2.3 只放行指定 IP(更安全)
开放整台机器的服务端口前,先想想能不能限定来源地址。rich rule 就能做到:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.159.150" port protocol="tcp" port="64922" accept'
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.159.150" port protocol="tcp" port="64922" accept'
firewall-cmd --reload
运维里对管理端口(SSH、数据库、后台)尽量这么配,只给跳板机或运维网段。
三、改 SSH 端口时踩的 SELinux 坑
想提高安全性,很多人的做法是改 SSH 默认端口 22。改完 /etc/ssh/sshd_config 后重启 sshd 报错起不来,八成是 SELinux 拦的——SELinux 只允许 sshd 使用被登记过的端口,你配了一个它不认识的端口号,策略校验过不去,sshd 直接拒绝启动。
3.1 临时解法的原理
一种常见处理是编辑 /etc/selinux/config:
SELINUX=disabled # 禁用 SELinux
SELINUXTYPE=targeted
把 SELINUX 从 enforcing(强制模式,违反策略的操作会被系统阻止)改成 disabled,系统启动时就不再加载 SELinux 模块。这样 sshd 换任意端口都能起来。
注意:关 SELinux 是下策——它会让整套强制访问控制失效, 容器、权限隔离等依赖它的场景会一起变松。改端口前先试下面 3.2 的正确姿势,不行再考虑禁用。
3.2 更稳妥的做法:把新端口登记进 SELinux 策略
不关 SELinux,只是告诉它"64922 这个端口也允许 sshd 用":
semanage port -a -t ssh_port_t -p tcp 64922 # 添加(已存在会报 Already exists,改用 -m)
semanage port -m -t ssh_port_t -p tcp 64922 # 修改
semanage port -l | grep ssh # 查看 ssh 已登记的端口
grep sshd /etc/ssh/sshd_config | grep -v '^#'
systemctl restart sshd
记得 sshd_config 里 Port 64922 要去掉行首注释,两端(sshd_config + selinux + firewall)都改完再重启,端口才能正常用。
3.3 完整顺序(推荐)
- 改
/etc/ssh/sshd_config 的 Port;
semanage port 把新端口加进 ssh_port_t;
firewall-cmd --permanent --add-port=64922/tcp 并 --reload;
systemctl restart sshd,确认状态是 active;
- 用新端口从客户端连一次,成功后再把老端口 22 从防火墙移除。
第 5 步很关键——别一上来就 --remove-service=ssh,万一新端口没通,就被自己锁在门外了。
四、总结
openEuler 的日常初始化基本就这两块:
- yum 源:离线环境挂 ISO + 写
/etc/yum.repos.d/openEuler.repo(baseurl=file:///mount/iso、gpgcheck=no),并把挂载写进 /etc/fstab 保证重启后还在;有公网就换在线源并 yum clean all && yum makecache。
- 防火墙:firewalld 用
--permanent 加规则 + --reload 生效,生产上优先用 rich rule 限定来源 IP,而不是整段放开。
改 SSH 端口时记住"三处一致":sshd_config 的 Port、SELinux 的 ssh_port_t、firewalld 的放行端口,三者都改对再重启。SELinux 拦住 sshd 起步的常见报错,先 semanage port -l | grep ssh 看看,别急着把 SELinux 关掉——那相当于为了开一扇门,把整栋楼的防盗系统拆了。
(本文由 qidao123.com企服评测-应用市场 编辑提示整理:以 openEuler 22.03 LTS 为例,firewalld 与 SELinux 操作适用于 RHEL 系通用场景,改动前请备份配置文件。) |