跳转到内容

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 权限的系统账号
  • 一台能通过网络访问该服务器的电脑(带浏览器)

很多 EL 系统在安装时已经包含了 cockpitcockpit-ws,尤其是带图形界面的安装。如果是最小化安装,手动装一下即可。

安装 Cockpit
$ 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),直接放行即可。

永久放行 cockpit 服务并重载
$ sudo firewall-cmd --add-service=cockpit --permanent
$ sudo firewall-cmd --reload

确认规则已生效:

查看已放行的服务
$ sudo firewall-cmd --list-services

输出里应包含 cockpit

在另一台电脑的浏览器中打开服务器地址,端口是 9090,协议是 HTTPS:

https://<服务器IP>:9090

<服务器IP> 换成你的服务器实际 IP 或主机名。第一次访问时,浏览器会弹出安全警告——这是因为 Cockpit 默认使用自签名证书,浏览器无法验证它的身份。这在内网环境下是正常现象,确认地址无误后选择”继续访问”即可。稍后的安全加固一节会介绍如何换成正式证书。

登录页用系统账号登录即可——也就是你平时 SSH 登录用的那个用户名和密码。

登录后,左侧导航栏汇集了日常运维最常用的面板:

  • 概览:CPU、内存、磁盘负载,硬件信息,以及待安装的更新提醒
  • 日志:浏览 systemd journal 日志,可按时间、优先级、服务过滤
  • 服务:图形化管理 systemd 单元,启动、停止、启用、禁用一目了然
  • 网络:基于 NetworkManager 配置网卡、绑定、桥接、防火墙,并实时显示流量
  • 存储:管理磁盘、分区、LVM、文件系统和挂载
  • 账户:创建和管理用户、设置密码、配置 SSH 公钥
  • 软件更新:检查并安装系统更新(依赖 cockpit-packagekit)
  • 终端:一个内置在浏览器里的完整 shell,命令行操作随时可用

安装相应扩展插件后,还会出现 Podman 容器虚拟机 等面板。

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 状态与排查告警

如果你有多台都装了 Cockpit 的服务器,可以在一台 Cockpit 界面里把其它主机添加进来,集中切换管理,省去逐个打开浏览器标签。

  1. 确保目标主机也安装并启用了 cockpit.socket,且 9090 端口在你当前登录的主机可达。

  2. 在 Cockpit 左上角点击主机名旁的下拉箭头,选择「添加新主机」。

  3. 填入目标主机地址和登录用户,首次连接需要确认其 SSH 主机指纹。

添加成功后,就能在同一界面里通过下拉菜单在多台主机之间切换。

Cockpit 直接暴露了服务器的管理能力,因此访问控制要认真对待。

最稳妥的做法是只在内网或 VPN 内开放 9090 端口,不要直接暴露到公网。如果确实需要从公网访问,建议把 Cockpit 放到反向代理(如 Nginx)后面,由代理统一处理正式 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

root 默认就被禁止登录 Cockpit,相关规则在下面这个文件里:

查看被禁止登录的用户
$ sudo cat /etc/cockpit/disallowed-users

要禁止更多账号,把用户名按行加进该文件即可(每行一个)。

如果想把默认的 9090 换成别的端口,需要新建一个 socket 覆盖配置。

  1. 创建覆盖目录与配置文件:

    Terminal window
    $ sudo mkdir -p /etc/systemd/system/cockpit.socket.d
  2. /etc/systemd/system/cockpit.socket.d/listen.conf 写入新端口(这里以 9999 为例):

    /etc/systemd/system/cockpit.socket.d/listen.conf
    [Socket]
    ListenStream=
    ListenStream=9999

    第一行空的 ListenStream= 用于清除默认的 9090,必不可少。

  3. 重载并重启 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 上,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 并在防火墙放行新端口。