Meta 描述:以 Ubuntu 22.04、Debian 11 和现代 RHEL 系为例,安装并启动 Cockpit,排查 9090 打不开,实现远程访问,并用 systemd 服务与 Journal 日志快速定位故障。
每次想查一个 systemd 服务状态、翻几段 Journal,都要重新打开 SSH;很多服务器面板都在尝试减少这类重复操作。Cockpit 可以把系统概览、服务启停和日志放到浏览器里,但安装成功只是第一步,端口监听、主机防火墙、云安全组和反向代理仍要逐层确认。
最短路径是:Debian/Ubuntu 使用 sudo apt install cockpit,现代 RHEL 系使用 sudo dnf install cockpit;随后启用 cockpit.socket、确认 9090 正在监听,再通过 https://服务器IP:9090 登录。登录使用服务器本地 Linux 账号和密码。本机能访问而远程打不开时,应先查防火墙、安全组和代理,而不是反复重装 Cockpit。
装完先确认 Cockpit 和 9090 都已就绪
Ubuntu 22.04、Debian 11 可以直接从系统仓库安装;现代 RHEL 系使用 DNF。CentOS 7、RHEL 7 这类旧系统虽然还能看到 yum install cockpit 的教程,但不应把旧命令直接套到当前发行版上。RHEL 8 环境还可能已经预装 Cockpit,先查再装更省事。
# Debian / Ubuntu
sudo apt update
sudo apt install cockpit
# 现代 RHEL 系
sudo dnf install cockpit
# 查看 Cockpit 相关 systemd 单元
systemctl list-unit-files | grep cockpit
# 启用并启动 socket
sudo systemctl enable --now cockpit.socket
# 分别检查 socket、service 和端口监听
systemctl status cockpit.socket
systemctl status cockpit.service
ss -tunlpe | grep cockpit
这里最容易混淆的是 cockpit.socket 和 cockpit.service。前者负责接收 9090 端口请求并触发 Cockpit 服务,属于 socket 激活方式。因此,在第一次打开页面之前,cockpit.service 显示未启动不一定代表安装失败;应先看 cockpit.socket 是否处于活动状态,再看 ss 能否找到 9090 监听。
如果 systemctl list-unit-files | grep cockpit 没有任何结果,先确认软件包是否真的安装成功以及仓库配置是否正确。如果 cockpit.socket 正常,而 ss 仍没有 9090 监听,再排查服务启动或套接字配置问题。
9090 打不开时从本机一路查到反向代理
访问地址应写成 https://服务器IP:9090,不是普通的 HTTP 地址。浏览器可能提示证书不受信任;如果出现这个提示,说明连接已经到达 HTTPS 服务,和“端口完全不通”不是同一类问题。正式部署时仍应按自己的证书和访问策略处理。
先在服务器本机打开这个地址。如果本机也打不开,回到 cockpit.socket、cockpit.service 和 ss 的检查结果;如果本机可以打开,但从另一台机器访问超时或拒绝连接,问题更可能位于防火墙、安全组、路由或代理层。
Debian/Ubuntu 使用 UFW 时,可以放行 Cockpit 端口:
sudo ufw allow 9090/tcp
RHEL 系使用 firewalld 时,按 Cockpit 提供的服务规则放行:
sudo firewall-cmd --add-service=cockpit --permanent
sudo firewall-cmd --reload
如果主机防火墙已经放行,远程访问仍不通,还要检查云平台安全组是否允许入站 TCP 9090,以及服务器是否有可到达该网段的路由。安全组最好限制来源 IP,而不是对所有来源开放。
通过 Nginx 等反向代理访问时,重点检查 TLS、上游地址以及 WebSocket 转发。登录页能出现但页面功能异常,通常说明基础 HTTPS 已通,问题可能出在代理没有正确处理 Cockpit 所需的实时连接;现有资料没有覆盖所有发行版和代理环境,不宜直接套用一份未经验证的 Nginx 配置。
不建议把 9090 无保护地暴露在公网。远程使用应优先限制在私网内,或通过 VPN、SSH 隧道、带访问控制的 TLS 代理访问;若必须直接开放,至少同时收紧主机防火墙和云安全组的来源范围。
服务改完用 Journal 对照结果
Cockpit 的 Overview 页面可以查看 CPU、内存、磁盘和网络状态,Services 页面用于启动、停止或重启服务,Logs 页面用于查看 Journal 日志。菜单名称可能随版本或界面语言略有变化。
在网页中完成操作后,最可靠的验证方式仍是回到 systemd 核对:
systemctl status <service>
journalctl -u <service>
第一条确认服务当前是否运行以及最近一次状态变化,第二条查看该服务对应的 Journal 记录。Cockpit 的操作仍由系统服务管理器执行,不维护另一套独立配置,因此网页结果与命令行结果应该能够互相印证。如果页面提示权限不足,需要换用具备相应管理权限的本地账号。
只有确实需要管理 Podman 或虚拟机时,才另外安装 cockpit-podman 或 cockpit-machines;普通的服务与日志管理不需要额外扩展模块。
我的判断是,Cockpit 更适合作为 SSH 之外可快速救火的可视化控制台:查状态、启停服务、翻日志,可以少切几次窗口。在复杂自动化和生产级变更中,仍应保留命令行以及既有的发布流程,不要因为有了网页界面就把权限边界和变更记录一起丢掉。












暂无评论内容