跳转到内容
搜索 AlmaLinux 文档

    浏览当前文档目录

    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
    $ rpm -q cockpit cockpit-ws cockpit-bridge
    cockpit-356-1.el10.x86_64
    cockpit-ws-356-1.el10.x86_64
    cockpit-bridge-356-1.el10.noarch
    $ systemctl is-enabled cockpit.socket
    enabled
    $ systemctl is-active cockpit.socket
    active
    $ ss -tlnp | grep 9090
    LISTEN 0 4096 *:9090 *:*

    它是 socket 激活的:

    $ systemctl cat cockpit.socket | grep -E "ListenStream|WantedBy"
    ListenStream=9090
    WantedBy=sockets.target

    所以平时没有常驻进程,第一次访问 9090 才拉起 cockpit-ws。Server 组顺带把防火墙服务也放行了:

    $ firewall-cmd --list-services
    cockpit dhcpv6-client ssh

    最小化安装(349 包)里没有这些,需要自己装 cockpit 并 systemctl enable --now cockpit.socket。

    登录后先看到的是「受限模式」

    Section titled “登录后先看到的是「受限模式」”

    AlmaLinux 10.2 cockpit 登录页

    用普通账号(本例 labuser,已属 wheel)登录后,第一屏是黄色横幅:

    Web console is running in limited access mode. —— Turn on administrative access

    即使这个用户在 wheel 里,cockpit 也默认以非特权会话打开,需要点一次按钮(相当于 sudo 提权)才能做改配置、重启服务这类操作。这是设计,不是权限配错。

    AlmaLinux 10.2 cockpit 概览页

    概览页能直接读到的信息:发行版与版本、健康告警(失败的服务、更新状态、非正常关机)、CPU/内存、机型、machine-id、宿主机时间、性能配置档案、加密策略。

    安装后 /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 -dates
    subject=C=US, O=1162730b..., CN=localhost
    issuer=C=US, O=1162730b..., CN=localhost
    notBefore=Oct 21 14:29:37 2026 GMT
    notAfter=Nov 20 14:29:37 2027 GMT

    三个直接后果:

    1. 浏览器一定报证书不受信;
    2. CN=localhost 意味着用 IP 访问也会不匹配;
    3. 有效期一年,到期后浏览器会拒绝连接,需要换证书。

    另外 /etc/cockpit/cockpit.conf 默认不存在——没有配置文件不等于没配置,默认值就够跑。

    # 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 会拒绝使用。

    1) systemctl is-enabled cockpit.socket # 没启用 → enable --now
    2) ss -tlnp | grep 9090 # 没监听 → 看 cockpit-ws 日志
    3) firewall-cmd --list-services | grep cockpit
    4) 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:旧证书会一直用到进程退出。
    Terminal window
    systemctl is-enabled cockpit.socket
    ss -tlnp | grep 9090
    sudo firewall-cmd --list-services
    curl -k -o /dev/null -w "%{http_code}\n" https://127.0.0.1:9090/
    sudo ls -l /etc/cockpit/ws-certs.d/

    检查:

    1. socket 为 enabled 且 9090 处于 LISTEN;
    2. 防火墙服务列表含 cockpit;
    3. 本机 curl -k 返回 200;
    4. 证书目录里存在 0-self-signed.cert(或你替换后的文件名)。

    常见问题

    最小化安装能用 cockpit 吗?

    能,但要自己装 cockpit 包并启用 socket;Server 组只是替你装好并放行了防火墙。

    能不能只允许特定管理员登录?

    可以,用 /etc/cockpit/cockpit.conf 的 allowed-users 与 PAM 规则限制,再配合 sudoers 控制提权范围。

    9090 暴露在公网安全吗?

    不建议。放到内网或 VPN 后面,前面加反代与强认证;cockpit 自身只有自签证书和 PAM 口令。