nmcli 配静态 IP 与 SSH
RHEL 9 用 hostnamectl 与 nmcli 配主机名、静态 IPv4、开机自启;讲清连接名与网卡名,并完成 SSH、PermitRootLogin 与密钥登录。
本页目录
RHEL 9 网络默认交给 NetworkManager,考场与生产里最稳的交互工具是 nmcli。本篇按真实运维顺序走一遍:改主机名 → 认网卡 → 管理连接 → 配静态 IP → 激活验证 → 开 SSH。中间会专门拆开「连接名」和「网卡设备名」——这是考试里最常见的混淆点。
系列:从 RHCSA 到 RHCE · 第 3 / 17 篇 上一篇:Linux 基础命令 下一篇:VIM 三模式 总目录:系列索引
环境说明
| 项目 | 示例 |
|---|---|
| 系统 | RHEL 9 |
| 实验机 | server,IP 192.168.56.10/24 |
| 网关 / DNS | 192.168.56.1(DNS 可另指 223.5.5.5 等) |
| 管理机 | 可 SSH 到实验机的另一台主机或宿主机 |
| 身份 | root |
把上表换成你的地址。网卡名以本机 ip 输出为准。
1. 配置主机名
默认主机名常见为 localhost。改成稳定、可解析的名字:
hostnamectl hostname server
重新登录或新开 SSH 会话后,提示符应变为类似:
[root@server ~]#
查看:
hostname
hostnamectl
Static hostname: server
Icon name: computer-vm
Chassis: vm
...
考点:RHEL 9 上
hostnamectl hostname <名称>即可,改完立即生效、无需重启。RHEL 8 更常见的是hostnamectl set-hostname <名称>,效果等价。
2. 认网卡:ip a
ip -br a
# 或
ip a s
lo UNKNOWN 127.0.0.1/8 ::1/128
enp1s0 UP 192.168.56.10/24 ...
要点:
lo是回环,忽略。- 真实网卡可能是
enp1s0、ens160、ens33、eth0等,没有全球统一命名。 UNKNOWN/UP/DOWN看链路与驱动状态;配错网卡是考试高频翻车点。
下文以 enp1s0 为例,请替换成你看到的设备名。
临时地址 vs 持久配置
ip addr add 重启即失效,只适合应急验证连通性:
ip addr add 192.168.56.99/24 dev enp1s0
ip addr del 192.168.56.99/24 dev enp1s0
考试与生产要用 nmcli(写进 NetworkManager,可 autoconnect)。下文全部用 nmcli。
3. 连接名 vs 网卡名(必懂)
nmcli con show
NAME UUID TYPE DEVICE
System eth0 7ae5674d-... ethernet enp1s0
| 概念 | 含义 | 示例 | 用在 |
|---|---|---|---|
| 设备名(device) | 内核里的网卡 | enp1s0 | ifname、ip a |
| 连接名(connection) | NetworkManager 里的配置档案 | System eth0 | nmcli con ... 后面跟的 NAME |
| UUID | 连接档案的唯一 ID | 7ae5674d-... | 脚本里更稳,考试少用 |
两者可以不同。考试题干若写「修改名为 System eth0 的连接」,你操作的是 NAME,不是网卡名。
系统也可能存在一个连接名恰好等于设备名的默认档案(如 enp1s0),同样要以 nmcli con show 为准。
nmcli device status
nmcli -f GENERAL.STATE,GENERAL.CONNECTION device show enp1s0
可看到设备与当前绑定的连接。
精读 con show NAME 输出
nmcli con show "System eth0" | head -n 30
关注:
| 字段(节选) | 含义 |
|---|---|
| connection.id | 连接名 |
| connection.interface-name | 绑定的网卡设备名 |
| ipv4.method | manual 静态 / auto DHCP / disabled |
| ipv4.addresses | 地址列表 |
| ipv4.gateway | 网关 |
| ipv4.dns | DNS 列表 |
| connection.autoconnect | 是否开机自动连 |
只看关心的列:
nmcli -f ipv4.method,ipv4.addresses,ipv4.gateway,ipv4.dns,connection.autoconnect \
con show "System eth0"
4. 标准实验:删旧连接并重建
下面演示把节点收成「一条干净的以太网连接」。若你的环境已有一条正确的连接,也可以直接从 修改 一节开始。
4.1 删除旧连接(可选)
nmcli con show
nmcli con delete "System eth0"
nmcli con show
con delete 删的是连接档案,一般不会拔掉网卡驱动。名字务必与 nmcli con show 的 NAME 列一致。
4.2 添加连接
nmcli connection add ifname enp1s0 con-name "System eth0" type ethernet
| 参数 | 含义 |
|---|---|
| ifname | 绑定哪块网卡(设备名) |
| con-name | 新建连接叫什么(连接名,可自定义) |
| type ethernet | 以太网 |
4.3 配置静态 IPv4
nmcli con modify "System eth0" \
ipv4.method manual \
ipv4.addr 192.168.56.10/24 \
ipv4.gateway 192.168.56.1 \
ipv4.dns 192.168.56.1 \
autoconnect yes
| 参数 | 含义 |
|---|---|
| ipv4.method manual | 静态地址(auto 为 DHCP) |
| ipv4.addr | IP 与前缀长度,/24 必写 |
| ipv4.gateway | 默认网关 |
| ipv4.dns | DNS,可多个,空格分隔 |
| autoconnect yes | 开机自动启用该连接 |
多个 DNS 示例:
nmcli con modify "System eth0" ipv4.dns "192.168.56.1 223.5.5.5 8.8.8.8"
需要追加地址而不是替换时,注意 ipv4.addr 语义与 +ipv4.addr(nmcli 8/9 支持 +/- 前缀增删)——考试题一般只要求一组地址,用上表写法即可。
易错:
method仍为auto时,静态addr可能不生效。静态配置先改成manual。 易错:modify后面的连接名要加引号(含空格时必须)。 易错:ipv4.dns写多个地址时要用引号包成一个参数。
4.4 立刻激活
nmcli con up "System eth0"
Connection successfully activated
关闭某连接:
nmcli con down "System eth0"
注意:若你正通过 SSH 连在这台机器上,
down当前使用的连接会立刻断线。改配置时优先modify+ 再up,或在虚拟机控制台操作。
4.5 验证
ip -br a
ip route
nmcli -f ipv4.method,ipv4.addresses,ipv4.gateway,ipv4.dns con show "System eth0"
cat /etc/resolv.conf
ping -c 3 192.168.56.1
预期:
ip -br a中enp1s0为192.168.56.10/24ip route有default via 192.168.56.1resolv.conf含你配置的 DNS(若用 NetworkManager 管理,可能是生成文件)- 能 ping 通网关(宿主机/路由器开着的话)
可选:解析域名验证 DNS
getent hosts www.lhyper.cn || ping -c 1 www.baidu.com
4.6 重启后是否仍生效
静态地址 + autoconnect yes 应在重启后保持。快速确认配置,再重启验证:
nmcli -f connection.autoconnect con show "System eth0"
reboot
# 回来后
ip -br a
5. nmcli 速查
| 任务 | 命令 |
|---|---|
| 列连接 | nmcli con show |
| 列设备 | nmcli device status |
| 加连接 | nmcli con add ifname DEV con-name NAME type ethernet |
| 改参数 | nmcli con modify NAME ... |
| 启用 / 停用 | nmcli con up NAME / nmcli con down NAME |
| 删连接 | nmcli con delete NAME |
| 查看详情 | nmcli con show NAME |
| 只看字段 | nmcli -f ipv4.method,ipv4.addresses con show NAME |
| 重载配置(少用) | nmcli connection reload |
常用字段简写:con = connection,mod = modify,up/down = 激活/停用。考试时间紧,建议整段背下 add → modify → up → ip -br a。
6. 用 SSH 远程登录
网络通了之后,通常从管理机 SSH 进来,而不必一直守在虚拟机控制台。
6.1 基本登录
在管理机执行:
ssh root@192.168.56.10
或:
ssh -l root 192.168.56.10
首次连接会提示确认指纹,输入 yes,再输入密码。成功后提示符变为实验机的主机名。
指定端口(若 sshd 改过端口):
ssh -p 2222 root@192.168.56.10
6.2 允许 root 远程登录(考试常见)
许多精简环境默认 禁止 root 用密码 SSH。在实验机上编辑(编辑器细节见 VIM 篇,本篇只需会保存退出):
vim /etc/ssh/sshd_config
找到(可能被注释):
#PermitRootLogin prohibit-password
按考试/实验要求改为:
PermitRootLogin yes
说明:
| 值 | 行为 |
|---|---|
| no | 禁止 root 登录 |
| prohibit-password | 允许 root,但仅密钥,拒密码(RHEL 常见默认) |
| yes | 允许 root(含密码,取决于 PasswordAuthentication) |
若还要求密码登录,确认:
PasswordAuthentication yes
改完必须重启 SSH 服务:
systemctl restart sshd
systemctl status sshd --no-pager
验证最终生效值(不是只看文件字面;需 root):
sshd -T | grep -i permitrootlogin
sshd -T | grep -i passwordauthentication
易错:只改配置不
restart sshd,旧连接不断、新策略不生效,容易误以为「改了没用」。 易错:改的是sshd_config服务端,不是客户端的~/.ssh/config。 易错:RHEL 9 的sshd_config顶部常有Include /etc/ssh/sshd_config.d/*.conf。sshd 对同一指令取先出现的值;若 drop-in 里已经写了PermitRootLogin,只改主文件里的注释行可能无效。
6.3 验证远程
在管理机新开会话:
ssh root@192.168.56.10
hostname
ip -br a
能登进去、看到正确主机名和 IP,即链路与策略都通了。
6.4 密钥登录(推荐,含最小步骤)
密码登录方便考试,密钥登录更安全、也适合日常。最小流程:
管理机:
ssh-keygen -t ed25519 -C "lab-admin"
# 一路回车即可;已有 ~/.ssh/id_ed25519 则不必覆盖
ssh-copy-id root@192.168.56.10
# 输入一次 root 密码
之后登录不再要密码:
ssh root@192.168.56.10
实验机侧常见对应关系:
| 文件 | 作用 |
|---|---|
| ~/.ssh/authorized_keys | 允许哪些公钥登录该用户 |
| ~/.ssh/id_ed25519 | 本机私钥(管理机,勿外传) |
| ~/.ssh/id_ed25519.pub | 本机公钥 |
ssh-copy-id 失败时,也可手动把公钥一行追加进目标的 authorized_keys,并保证:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
权限过宽时 sshd 可能拒绝密钥登录。
练习/考试:题面若要求
PermitRootLogin yes或仅密码登录,以题面为准;密钥是加分项,不是唯一路径。
7. 排查清单(配完仍不通)
按顺序查,不要跳:
- IP 是否配上
ip -br a看地址是否在正确网卡上。 - 连接是否激活
nmcli con show的 DEVICE 列是否为你的网卡;nmcli -f GENERAL.STATE device show enp1s0。 - 网关与同网段
ip route;管理机与实验机是否同一虚拟网络(NAT / 仅主机 / 桥接)。 - 防火墙
systemctl is-active firewalld;SSH 需要放行ssh服务(详见防火墙篇)。 - sshd 是否在听
systemctl is-active sshd;ss -lnt 'sport = :22'。 - SSH 策略
sshd -T看PermitRootLogin、PasswordAuthentication;改完是否restart sshd。 - SELinux(少见于基础 SSH)
若曾改端口,需要
semanage port,见 SELinux 专篇。
# 实验机上快速自检
ip -br a
nmcli con show
ip route
systemctl is-active sshd
ss -lnt 'sport = :22'
sshd -T | grep -iE 'permitrootlogin|passwordauthentication'
8. 推荐实验路径
- 只配 IP,不重启 sshd,用管理机
ping 192.168.56.10。 - 开
PermitRootLogin yes并restart sshd,再ssh root@...,用sshd -T验证。 - 故意
nmcli con down当前连接,在控制台up回来,体会「SSH 断线」场景。 - 改连接名为考试常见的
System eth0,设备名保持你的enp1s0,重复modify/up,强化「两个名字」记忆。 - 做一次
ssh-copy-id,再从密钥登录;对比密码登录。
考点与易错
考点:
nmcli con add/modify/up、静态 IPv4 四要素(method/addr/gateway/dns)、autoconnect yes。 考点:PermitRootLogin yes+systemctl restart sshd。 易错:对con delete/con modify使用网卡名,而题干要的是连接名。 易错:ipv4.addr漏掉/24。 易错:在 SSH 会话里down自己的网卡导致断连。 易错:只改sshd_config字面,未确认 drop-in 与sshd -T。 练习环境:课堂地址若是172.25.0.25,步骤不变;rht-vmctl reset仅用于课堂虚拟机还原,与 nmcli 本身无关。
小结
- 主机名用
hostnamectl hostname;网卡用ip -br a认,不要死记名字;ip addr add只是临时。 - NetworkManager 里改的是连接:
add/modify/up,连接名与设备名可以不同。 - 静态 IPv4 记住四件套 +
autoconnect yes;改完用ip -br a和ip route验证。 - SSH:
PermitRootLogin+ restart sshd,用sshd -T看生效值;日常可再上密钥登录。
节点能稳定远程之后,下一篇用 VIM 高效改配置文件——网络、软件源、sudoers 都离不开编辑器。
系列导航:总目录 · 上一篇:Linux 基础命令 · 下一篇:VIM 三模式