Cockpit 网页管理界面
适用于 CentOS Stream 9 & 10 / AlmaLinux 9.x & 10.x / Rocky Linux 9.x & 10.x
Cockpit 是企业级 Linux 自带的、基于 Web 的服务器管理界面。你用浏览器登录后,就能在图形界面里查看系统状态、管理服务、查日志、配网络、装更新,甚至直接打开一个内置终端。它不替代 SSH 命令行,而是和命令行互补——日常巡检和图形化运维用 Cockpit 更直观,复杂操作仍然可以回到终端。对刚上手 Linux 的你来说,它是一个很友好的起点。
- Cockpit 是什么,以及它和 SSH 命令行的关系
- 如何安装、启用 Cockpit 并放行防火墙
- 如何用浏览器登录并了解各个功能面板
- 如何安装常用扩展插件(容器、虚拟机、存储等)
- 如何加固安全:换正式证书、限制登录、改端口
- 一台已安装并完成初始化配置的 EL 9 或 EL 10 系统
- 拥有 sudo 权限的系统账号
- 一台能通过网络访问该服务器的电脑(带浏览器)
安装 Cockpit
Section titled “安装 Cockpit”很多 EL 系统在安装时已经包含了 cockpit 和 cockpit-ws,尤其是带图形界面的安装。如果是最小化安装,手动装一下即可。
$ sudo dnf install cockpit如果系统提示已经安装,那就直接进入下一步。
Cockpit 使用 systemd 的 socket 激活方式运行——平时并不常驻,只有当有人访问 9090 端口时才被 systemd 唤醒,几乎不占资源。你需要启用的是 cockpit.socket,而不是 cockpit.service。
$ sudo systemctl enable --now cockpit.socket确认 socket 处于监听状态:
$ systemctl status cockpit.socket输出中应能看到 Active: active (listening),表示已在监听 9090 端口:
● cockpit.socket - Cockpit Web Service Socket Loaded: loaded (/usr/lib/systemd/system/cockpit.socket; enabled; ...) Active: active (listening) since ... Listen: [::]:9090 (Stream)EL 默认启用 firewalld。Cockpit 自带一个名为 cockpit 的预定义服务(对应 9090/tcp),直接放行即可。
$ sudo firewall-cmd --add-service=cockpit --permanent$ sudo firewall-cmd --reload确认规则已生效:
$ sudo firewall-cmd --list-services输出里应包含 cockpit。
用浏览器登录
Section titled “用浏览器登录”在另一台电脑的浏览器中打开服务器地址,端口是 9090,协议是 HTTPS:
https://<服务器IP>:9090把 <服务器IP> 换成你的服务器实际 IP 或主机名。第一次访问时,浏览器会弹出安全警告——这是因为 Cockpit 默认使用自签名证书,浏览器无法验证它的身份。这在内网环境下是正常现象,确认地址无误后选择”继续访问”即可。稍后的安全加固一节会介绍如何换成正式证书。
登录页用系统账号登录即可——也就是你平时 SSH 登录用的那个用户名和密码。
登录后,左侧导航栏汇集了日常运维最常用的面板:
- 概览:CPU、内存、磁盘负载,硬件信息,以及待安装的更新提醒
- 日志:浏览 systemd journal 日志,可按时间、优先级、服务过滤
- 服务:图形化管理 systemd 单元,启动、停止、启用、禁用一目了然
- 网络:基于 NetworkManager 配置网卡、绑定、桥接、防火墙,并实时显示流量
- 存储:管理磁盘、分区、LVM、文件系统和挂载
- 账户:创建和管理用户、设置密码、配置 SSH 公钥
- 软件更新:检查并安装系统更新(依赖 cockpit-packagekit)
- 终端:一个内置在浏览器里的完整 shell,命令行操作随时可用
安装相应扩展插件后,还会出现 Podman 容器、虚拟机 等面板。
安装扩展插件
Section titled “安装扩展插件”Cockpit 的功能通过插件按需扩展。每个插件都是独立的 DNF 包,装上后对应面板会自动出现在导航栏里,无需重启服务。
$ sudo dnf install \ cockpit-podman \ cockpit-machines \ cockpit-storaged \ cockpit-networkmanager \ cockpit-packagekit \ cockpit-sosreport \ cockpit-selinux各插件的作用:
| 插件 | 提供的功能 |
|---|---|
cockpit-podman | 图形化管理 Podman 容器与镜像 |
cockpit-machines | 管理 KVM/libvirt 虚拟机 |
cockpit-storaged | 磁盘、分区、LVM、文件系统管理 |
cockpit-networkmanager | 网络接口、绑定、桥接配置 |
cockpit-packagekit | 检查与安装软件更新 |
cockpit-sosreport | 一键生成 sosreport 诊断报告 |
cockpit-selinux | 查看 SELinux 状态与排查告警 |
集中管理多台主机
Section titled “集中管理多台主机”如果你有多台都装了 Cockpit 的服务器,可以在一台 Cockpit 界面里把其它主机添加进来,集中切换管理,省去逐个打开浏览器标签。
-
确保目标主机也安装并启用了
cockpit.socket,且 9090 端口在你当前登录的主机可达。 -
在 Cockpit 左上角点击主机名旁的下拉箭头,选择「添加新主机」。
-
填入目标主机地址和登录用户,首次连接需要确认其 SSH 主机指纹。
添加成功后,就能在同一界面里通过下拉菜单在多台主机之间切换。
Cockpit 直接暴露了服务器的管理能力,因此访问控制要认真对待。
仅在内网开放或走反向代理
Section titled “仅在内网开放或走反向代理”最稳妥的做法是只在内网或 VPN 内开放 9090 端口,不要直接暴露到公网。如果确实需要从公网访问,建议把 Cockpit 放到反向代理(如 Nginx)后面,由代理统一处理正式 TLS 证书和访问控制。
换成正式 TLS 证书
Section titled “换成正式 TLS 证书”要消除浏览器的证书警告,把你的正式证书和私钥放进 Cockpit 的证书目录即可。Cockpit 会自动加载该目录下字母序最靠后的 .cert(及配套 .key)文件。
$ sudo cp fullchain.pem /etc/cockpit/ws-certs.d/50-mydomain.cert$ sudo cp privkey.pem /etc/cockpit/ws-certs.d/50-mydomain.key$ sudo systemctl restart cockpit限制可登录的用户
Section titled “限制可登录的用户”root 默认就被禁止登录 Cockpit,相关规则在下面这个文件里:
$ sudo cat /etc/cockpit/disallowed-users要禁止更多账号,把用户名按行加进该文件即可(每行一个)。
修改监听端口
Section titled “修改监听端口”如果想把默认的 9090 换成别的端口,需要新建一个 socket 覆盖配置。
-
创建覆盖目录与配置文件:
Terminal window $ sudo mkdir -p /etc/systemd/system/cockpit.socket.d -
在
/etc/systemd/system/cockpit.socket.d/listen.conf写入新端口(这里以 9999 为例):/etc/systemd/system/cockpit.socket.d/listen.conf [Socket]ListenStream=ListenStream=9999第一行空的
ListenStream=用于清除默认的 9090,必不可少。 -
重载并重启 socket,再放行新端口:
Terminal window $ sudo systemctl daemon-reload$ sudo systemctl restart cockpit.socket$ sudo firewall-cmd --add-port=9999/tcp --permanent$ sudo firewall-cmd --reload
EL 9 与 EL 10 的差异
Section titled “EL 9 与 EL 10 的差异”在 EL 9 和 EL 10 上,Cockpit 的安装、启用、防火墙和使用方式完全一致,本文所有命令两者通用。EL 10 自带的 Cockpit 版本更新,界面和插件功能略有增强,但操作逻辑没有变化,可以放心沿用。
浏览器打不开 https://服务器IP:9090
先在服务器上确认 socket 在监听:systemctl status cockpit.socket 应显示 active (listening);如果不是,运行 sudo systemctl enable --now cockpit.socket。再确认防火墙已放行:sudo firewall-cmd --list-services 里应有 cockpit,否则按上文重新放行。也别忘了检查你访问的 IP/端口和 HTTPS 协议是否填对。
浏览器一直提示证书不安全
这是因为 Cockpit 默认用自签名证书,浏览器无法验证其颁发机构,属于正常现象。内网使用时确认地址无误后继续访问即可;要彻底消除警告,请按换成正式 TLS 证书放置受信任的正式证书。
用 root 登录提示”权限被拒绝”
这是默认安全策略:root 被列在 /etc/cockpit/disallowed-users 中,禁止从 Cockpit 登录。请改用拥有 sudo 权限的普通账号登录,登录后在右上角开启”管理访问”即可执行提权操作。
想改掉默认的 9090 端口
参见上文修改监听端口:通过 cockpit.socket.d/listen.conf 覆盖 ListenStream,重启 socket 并在防火墙放行新端口。