AlmaLinux 10:cockpit 已经装好了,为什么还要会排查
AlmaLinux 10.2 Server 组虚拟机(@^server-product-environment),cockpit 356-1.el10。
通过 SSH 隧道从外部访问 9090 并截图,因此图里是真实浏览器渲染的界面,不是示意图:
- 登录页:
public/evidence/cockpit/alma-login.png - 概览页:
public/evidence/cockpit/alma-overview.png
Server 组自带,不需要手动安装
Section titled “Server 组自带,不需要手动安装”$ rpm -q cockpit cockpit-ws cockpit-bridgecockpit-356-1.el10.x86_64cockpit-ws-356-1.el10.x86_64cockpit-bridge-356-1.el10.noarch
$ systemctl is-enabled cockpit.socketenabled$ systemctl is-active cockpit.socketactive$ ss -tlnp | grep 9090LISTEN 0 4096 *:9090 *:*它是 socket 激活的:
$ systemctl cat cockpit.socket | grep -E "ListenStream|WantedBy"ListenStream=9090WantedBy=sockets.target所以平时没有常驻进程,第一次访问 9090 才拉起 cockpit-ws。Server 组顺带把防火墙服务也放行了:
$ firewall-cmd --list-servicescockpit dhcpv6-client ssh最小化安装(349 包)里没有这些,需要自己装 cockpit 并 systemctl enable --now cockpit.socket。
登录后先看到的是「受限模式」
Section titled “登录后先看到的是「受限模式」”
用普通账号(本例 labuser,已属 wheel)登录后,第一屏是黄色横幅:
Web console is running in limited access mode. —— Turn on administrative access
即使这个用户在 wheel 里,cockpit 也默认以非特权会话打开,需要点一次按钮(相当于 sudo 提权)才能做改配置、重启服务这类操作。这是设计,不是权限配错。

概览页能直接读到的信息:发行版与版本、健康告警(失败的服务、更新状态、非正常关机)、CPU/内存、机型、machine-id、宿主机时间、性能配置档案、加密策略。
证书是首次启动才生成的
Section titled “证书是首次启动才生成的”安装后 /etc/cockpit/ws-certs.d/ 是空目录;第一次启动服务时才生成自签证书:
$ ls -l /etc/cockpit/ws-certs.d/-rw-r--r--. 1 root root 1379 ... 0-self-signed.cert-rw-------. 1 root root 1704 ... 0-self-signed.key
$ openssl x509 -in /etc/cockpit/ws-certs.d/0-self-signed.cert -noout -subject -issuer -datessubject=C=US, O=1162730b..., CN=localhostissuer=C=US, O=1162730b..., CN=localhostnotBefore=Oct 21 14:29:37 2026 GMTnotAfter=Nov 20 14:29:37 2027 GMT三个直接后果:
- 浏览器一定报证书不受信;
CN=localhost意味着用 IP 访问也会不匹配;- 有效期一年,到期后浏览器会拒绝连接,需要换证书。
另外 /etc/cockpit/cockpit.conf 默认不存在——没有配置文件不等于没配置,默认值就够跑。
换成正式证书
Section titled “换成正式证书”# cp server.crt /etc/cockpit/ws-certs.d/50-server.cert# cp server.key /etc/cockpit/ws-certs.d/50-server.key# chmod 600 /etc/cockpit/ws-certs.d/50-server.key# systemctl restart cockpit.socket规则很简单:ws-certs.d/ 里按文件名排序,取最后一个 *.cert 与其同名 .key。放 50- 前缀就会覆盖 0-self-signed。私有键必须 600,否则 cockpit 会拒绝使用。
打不开时的排查顺序
Section titled “打不开时的排查顺序”1) systemctl is-enabled cockpit.socket # 没启用 → enable --now2) ss -tlnp | grep 9090 # 没监听 → 看 cockpit-ws 日志3) firewall-cmd --list-services | grep cockpit4) curl -k https://<host>:9090/ # 本机能开、外部不能 → 网络/防火墙5) journalctl -u cockpit-ws -n 20 # 证书/端口/权限错误都在这curl -k 那一步很关键:它把「服务问题」和「网络/证书问题」分开。
- 离线机器显示「Loading available updates failed」:概览页的红字是 dnf 无法访问仓库,属预期(我们的实验网没有默认路由),不是 cockpit 故障;
- 以为受限模式是权限错:点一次横幅按钮即可;要做自动化才需要持续提权;
cockpit-machines不会随 Server 组安装:需要虚拟机管理页得单独装;cockpit-podman则已装;- 改了证书没重启 socket:旧证书会一直用到进程退出。
练习:用命令验证而不是猜
Section titled “练习:用命令验证而不是猜”systemctl is-enabled cockpit.socketss -tlnp | grep 9090sudo firewall-cmd --list-servicescurl -k -o /dev/null -w "%{http_code}\n" https://127.0.0.1:9090/sudo ls -l /etc/cockpit/ws-certs.d/检查:
- socket 为 enabled 且 9090 处于 LISTEN;
- 防火墙服务列表含
cockpit; - 本机
curl -k返回 200; - 证书目录里存在
0-self-signed.cert(或你替换后的文件名)。
常见问题
最小化安装能用 cockpit 吗?
能,但要自己装 cockpit 包并启用 socket;Server 组只是替你装好并放行了防火墙。
能不能只允许特定管理员登录?
可以,用 /etc/cockpit/cockpit.conf 的 allowed-users 与 PAM 规则限制,再配合 sudoers 控制提权范围。
9090 暴露在公网安全吗?
不建议。放到内网或 VPN 后面,前面加反代与强认证;cockpit 自身只有自签证书和 PAM 口令。
- 服务与日志:/journald-logging/
- 防火墙放行:/firewalld-zones/
- 容器管理:/containers/