Cockpit面板

Cockpit

一个开源的Linux网页管理UI

安装

使用包管理器就可以安装:

1
2
3
4
5
# Debian
apt install cockpit

# RHEL
yum install cockpit

配置文件

注:监听IP和端口不能在配置文件处修改,只能在systemd socket中修改
配置文件位于/etc/cockpit/cockpit.conf,默认不存在,按照需要添加对应的配置项即可,可用的配置项如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[WebService]    # 主要配置
Origins = http://example.com:9090 https://example.com:9090 # cockpit监听的地址,用空格分隔,需要包含完整的URL
ProtocolHeader = X-Forwarded-Proto # 使用反向代理时确认是否使用HTTPS的Header,仅在使用反向代理时需要
ForwardedForHeader = X-Forwarded-For # 使用反向代理时确认真实主机IP的Header,仅在使用反向代理时需要
LoginTitle = Hello # 登录页面的标题
LoginTo = true|false # 设为true将允许通过cockpit连接别的主机,不设定本项将根据是否安装cockpit-ssh包自动决定
RequireHost = true|false # 设为true将必须指定主机名才能进入cockpit
MaxStartups = 10 # 和sshd的同名配置项相同,设定SSH最大并发连接数
AllowUnencrypted = true|false # 允许使用HTTP连接cockpit,否则cockpit会将所有HTTP连接重定向到HTTPS,注意,本地连接不受影响
UrlRoot = /cockpit-1/ # 设定根URL,常用于反向代理,/cockpit/和/cockpit+xxx/是保留的,不能使用,注意实际连接的URL的末尾总是有/的,无论此处的末尾有没有/
ClientCertAuthentication = true|false # 使用客户端TLS验证,一般用于智能卡
Shell = /shell/index.html # 进入cockpit后默认进入的页面,默认为/shell/index.html

[Log] # 日志
Fatal = criticals|warnings # 纳入警告的日志等级

[OAuth] # 双因素认证
URL = http://xxx.com # cockpit使用的双因素认证的地址
ErrorParam = 字符串 # cockpit搜寻的错误信息的字符串或段
TokenParam = 字符串 # cockpit搜寻的Token的字符串或段

[Session] # 会话设置
Banner = /etc/issue # 在登录页面显示指定的文件的内容,默认不显示
IdleTimeout = 0 # 指定多少时间无操作后用户自动退出,单位为分钟

启动

Cockpit有完善的systemd支持,只需要启动cockpit.service服务即可访问。
默认监听主机绑定的所有IP,9090端口。
启动服务后,cockpit-tls(或cockpit-ws,用于HTTP连接)会开始监听访问请求,当有用户登录并进入WebUI时,cockpit-bridge会开始启动并与对应用户建立连接。
Cockpit可以用于登录本机,也可以用作跳板机通过SSH登录别的机器,既可以使用密码认证,也可以使用公钥认证。

![[cockpit-transport.png]]

监听端口

Cockpit监听的IP与端口可以通过修改cockpit.socket中的ListenStream项改变。
注意,如果绑定单一的IP,强烈建议添加FreeBind=yes这个选项。

SSL证书

Cockpit首次运行时会在/etc/cockpit/ws-certs.d/目录下生成0-self-signed.cert自签名证书和0-self-signed.key密钥
你可以将自己生成的证书和密钥按照优先级-文件名.cert|crt优先级-文件名.key的格式放在/etc/cockpit/ws-certs.d/目录下,Cockpit会按优先级大小排序使用证书。注意,密钥不能是加密的。
证书格式为:

1
2
3
4
5
6
7
8
9
-----BEGIN CERTIFICATE-----    # 本地证书
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE----- # 全链证书
...
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY----- # 密钥
...
-----END PRIVATE KEY-----

你可以使用这条命令检查Cockpit证书是否可用和使用的证书:

1
2
3
4
5
# RHEL
/usr/libexec/cockpit-certificate-ensure --check

# Debian
/usr/lib/cockpit/cockpit-certificate-ensure --check

模块

Cockpit是一个庞大的项目,提供了很多模块来扩展其功能,现在包括以下几种:
cockpit-file-sharing SMB和NFS的配置模块,需要smb和nfs-utils依赖
cockpit-storaged 存储配置模块,需要udisks依赖
cockpit-composer Composer配置模块
cockpit-docker Docker配置模块(过时)
cockpit-podman Podman配置模块
cockpit-machines 虚拟机配置模块,需要virt-install依赖
cockpit-networkmanager 网络配置模块,需要NetworkManager依赖
cockpit-dashboard 系统信息监视模块(过时)
cockpit-system 系统信息监视模块
cockpit-packagekit 软件包管理模块
cockpit-session-recording 行为录制模块
cockpit-389-ds 389DS配置模块
cockpit-sosreport 系统诊断模块,需要sosreport依赖
cockpit-subscriptionssubscription-manager-cockpit 订阅检查模块