Linux

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
网关 / DNS192.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)内核里的网卡enp1s0ifname、ip a
连接名(connection)NetworkManager 里的配置档案System eth0nmcli con ... 后面跟的 NAME
UUID连接档案的唯一 ID7ae5674d-...脚本里更稳,考试少用

两者可以不同。考试题干若写「修改名为 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.methodmanual 静态 / auto DHCP / disabled
ipv4.addresses地址列表
ipv4.gateway网关
ipv4.dnsDNS 列表
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.addrIP 与前缀长度,/24 必写
ipv4.gateway默认网关
ipv4.dnsDNS,可多个,空格分隔
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/24
  • ip route 有 default via 192.168.56.1
  • resolv.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. 排查清单(配完仍不通)

按顺序查,不要跳:

  1. IP 是否配上 ip -br a 看地址是否在正确网卡上。
  2. 连接是否激活 nmcli con show 的 DEVICE 列是否为你的网卡;nmcli -f GENERAL.STATE device show enp1s0。
  3. 网关与同网段 ip route;管理机与实验机是否同一虚拟网络(NAT / 仅主机 / 桥接)。
  4. 防火墙 systemctl is-active firewalld;SSH 需要放行 ssh 服务(详见防火墙篇)。
  5. sshd 是否在听 systemctl is-active sshd;ss -lnt 'sport = :22'。
  6. SSH 策略 sshd -T 看 PermitRootLogin、PasswordAuthentication;改完是否 restart sshd。
  7. 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. 推荐实验路径

  1. 只配 IP,不重启 sshd,用管理机 ping 192.168.56.10。
  2. 开 PermitRootLogin yes 并 restart sshd,再 ssh root@...,用 sshd -T 验证。
  3. 故意 nmcli con down 当前连接,在控制台 up 回来,体会「SSH 断线」场景。
  4. 改连接名为考试常见的 System eth0,设备名保持你的 enp1s0,重复 modify/up,强化「两个名字」记忆。
  5. 做一次 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 本身无关。

小结

  1. 主机名用 hostnamectl hostname;网卡用 ip -br a 认,不要死记名字;ip addr add 只是临时。
  2. NetworkManager 里改的是连接:add/modify/up,连接名与设备名可以不同。
  3. 静态 IPv4 记住四件套 + autoconnect yes;改完用 ip -br a 和 ip route 验证。
  4. SSH:PermitRootLogin + restart sshd,用 sshd -T 看生效值;日常可再上密钥登录。

节点能稳定远程之后,下一篇用 VIM 高效改配置文件——网络、软件源、sudoers 都离不开编辑器。


系列导航:总目录 · 上一篇:Linux 基础命令 · 下一篇:VIM 三模式

相关阅读

全部文章 →
← 返回列表更多「Linux」