作为Write for DOnations计划的一部分,作者选择了免费和开源基金来接受捐赠。
介绍
Cockpit是一个服务器管理仪表板,可让您实时查看服务器的状态。它提供有关 CPU 负载、文件系统统计信息、进程和更多信息的信息。Cockpit 的好处之一是,当您未登录到控制面板时,它不会消耗任何服务器资源——该服务仅在您浏览到控制面板时启动。
您可以使用 Cockpit 执行服务器管理任务,例如管理用户和解决网络问题。您还可以从计算机或手机上的浏览器访问终端。Cockpit 使用您系统的用户进行登录和系统管理,sudo
用于权限提升。通过这种方式,Cockpit 不会通过创建第二组 Cockpit-only 用户为您的服务器引入额外的安全考虑。
在本教程中,您将在 Debian 10 服务器上部署一个安全的 Cockpit 服务器管理仪表板。
先决条件
在开始本指南之前,您需要具备以下条件:
- 使用Debian 10指南的初始服务器设置配置的一台 Debian 10 服务器。您应该按照指南中的说明配置和启用 UFW 防火墙。
- 指向您将用于访问 Cockpit 的服务器的域名。如果您需要有关指向域名的信息,请参阅域和 DNS指南。我们将
cockpit.your_domain
在本教程中使用示例域名。在开始之前,您的域必须指向您的服务器。
以启用 sudo 的非根服务器身份登录到您的服务器以开始。
步骤 1 — 安装 Cockpit
在这一步中,您将安装 Cockpit 并打开 Cockpit 在防火墙中使用的端口。
首先,使用 执行系统更新apt
。这将确保您的服务器具有最新的软件包并避免在 Cockpit 安装过程中出现任何错误:
- sudo apt update
- sudo apt upgrade
接下来,安装驾驶舱:
- sudo apt install cockpit
现在,使用以下mkdir
命令创建一个目录:
- sudo mkdir -p /usr/lib/x86_64-linux-gnu/udisks2/modules
您可以使用该-p
选项,以便mkdir
通过一次调用创建多个级别的目录。
您创建此目录是为了阻止在您的 Cockpit 实例中显示无害但会分散注意力的警告。出现此警告udisks2
是因为该实用程序无法找到/usr/lib/x86_64-linux-gnu/udisks2/modules
目录,除非udisks2
安装了其他目录,否则默认情况下不会创建该目录。
最后,打开 Cockpit 的访问端口9090
和80
您将在下一步中用于获取 SSL 证书的端口:
- sudo ufw allow 9090
- sudo ufw allow 80
您现在已经安装了 Cockpit 并打开了准备为您的域使用签名 SSL 证书的端口。您将在下一步中获得此证书。
第 2 步 – 获取 SSL 证书
在此步骤中,您将使用Certbot实用程序获得Let’s Encrypt颁发的 SSL 证书。Certbot 将注册并下载证书,并在证书到期时自动更新证书。
Certbot作为 Ubuntu snap包分发。snap
默认情况下,Debian 10 上未安装该实用程序,因此您必须将其作为snapd
软件包的一部分进行安装:
- sudo apt install snapd
接下来,运行以下两个命令以确保您运行的是最新版本的snap
:
- sudo snap install core
- sudo snap refresh core
现在,使用以下命令安装 Certbot snap:
- sudo snap install --classic certbot
--classic
此处的选项以经典模式安装 Certbot snap — 这减少了限制并允许访问更多系统资源,这是 Certbot 正常运行所必需的。
接下来,使用该实用程序创建一个符号链接,从/usr/bin/certbot
到 指向快照安装的 Certbot 二进制文件:/snap/bin/certbot
ln
- sudo ln -s /snap/bin/certbot /usr/bin/certbot
您需要创建此符号链接,因为并非 Linux 上的所有实用程序都知道它们应该查找/snap/bin/
程序文件;而/usr/bin/
是用户安装程序的标准位置。
注意:符号链接在 Linux 上的工作方式与快捷方式在 Windows 上的工作方式相同——它是从某个位置指向文件的指针。
现在您已经安装了 Certbot 实用程序,您将使用它通过以下命令注册和下载 SSL 证书:
- sudo certbot certonly --standalone --agree-tos --email your_email -d cockpit.your_domain
您使用了以下选项:
certonly
:注册并下载 SSL 证书,无需对系统进行其他更改。--standalone
:使用 Certbot 的内置 Web 服务器来注册证书。--agree-tos
:自动同意服务条款 (ToS)。--email your_email
:使用您的电子邮件地址来注册证书。(这将仅用于到期通知和安全信息。)-d cockpit.your_domain
:指定要用于 Cockpit 实例的域名。
当您运行此命令时,Certbot 会询问您是否要与电子前沿基金会(Certbot 实用程序的开发人员)共享您的电子邮件地址以接收非必要电子邮件。您不必同意即可注册 SSL 证书,因此请输入Y
“是”或N
“否”以继续并注册证书。
当 Certbot 实用程序完成注册后,它会将您的证书文件保存在./etc/letsencrypt/live/cockpit.your_domain
Cockpit 对使用 SSL 证书有几个要求:
- 证书文件必须在同一文件中包含证书和私钥。
- 此证书和密钥文件必须位于
/etc/cockpit/ws-certs.d
目录中并以.cert
.
因此,您需要使用您注册的 SSL 证书创建证书和密钥文件,以便您可以在 Cockpit 中使用它。您还需要配置 Certbot 以在续订证书时重新创建此文件。
首先,使用以下命令创建组合的证书和密钥文件:
- sudo bash -c "cat /etc/letsencrypt/live/cockpit.your_domain/fullchain.pem /etc/letsencrypt/live/cockpit.your_domain/privkey.pem >/etc/cockpit/ws-certs.d/cockpit.your_domain.cert"
你sudo bash -c
在这里使用是因为没有它命令将失败。这是因为重定向>
发生在与具有sudo
权限的shell 不同的 shell 中。
该cat
命令将证书和密钥文件的内容打印到标准输出,然后将此内容重定向>
到一个新文件中。
接下来,您将创建 Certbot 将运行的续订后脚本。此脚本将使用更新的证书重新创建证书和密钥文件,并重新启动 Cockpit 服务,以便它开始使用它。
/etc/cockpit/certificate-renewal.sh
使用文本编辑器打开脚本:
- sudo nano /etc/cockpit/certificate-renewal.sh
将以下代码添加到此文件中:
#!/usr/bin/env bash
echo "Recreating Cockpit SSL Certificate"
cat /etc/letsencrypt/live/cockpit.your_domain/fullchain.pem /etc/letsencrypt/live/cockpit.your_domain/privkey.pem > /etc/cockpit/ws-certs.d/cockpit.your_domain.cert
echo "Restarting Cockpit"
systemctl restart cockpit.socket
您已指定以下内容:
#!/usr/bin/env bash
: 这是shebang,告诉Linux 使用什么程序来执行脚本。在这种情况下,您规定了GNU Bash shell。echo
:此命令打印以下消息。您将在测试证书续订时收到此信息。cat
:这与您在本教程前面用于创建认证和密钥文件的命令相同。systemctl restart cockpit.socket
:这将重新启动 Cockpit,以便它使用新证书。
通过使用chmod更改其权限使此证书可执行:
- sudo chmod 755 /etc/cockpit/certificate-renewal.sh
如果您不确定 Linux 文件权限,请参阅Linux 权限简介以获取更多信息。
接下来,您将配置 Certbot 以在更新 SSL 证书时运行此脚本,方法是在./etc/letsencrypt/renewal/cockpit.your_domain.conf
用文本编辑器打开这个文件:
- sudo nano /etc/letsencrypt/renewal/cockpit.your_domain.conf
在该[renewalparams]
部分的末尾添加以下行:
post_hook = /etc/cockpit/certificate-renewal.sh
接下来,使用以下命令测试新配置是否正常工作:
- sudo certbot renew --dry-run
这些--dry-run
选项告诉 Certbot 执行证书续订,但不对您的证书进行任何更改。您将在输出底部收到以下几行:
OutputRunning post-hook command: /etc/cockpit/certificate-renewal.sh
Output from post-hook command certificate-renewal.sh:
Recreating Cockpit SSL Certificate
Restarting Cockpit
这告诉您更新脚本进程在 SSL 证书更新发生时正常工作。
最后,重新启动 Cockpit 以加载 SSL 证书:
- sudo systemctl restart cockpit.socket
您现在已经完全配置了 Cockpit 实例并准备好登录。
第 3 步 – 访问 Cockpit
您已将 Cockpit 界面配置为侦听 port 9090
,因此您需要在您键入浏览器的 URL 末尾指定此端口。这是您的 Cockpit 实例的 URL:
Cockpit Login URLhttps://cockpit.your_domain:9090
Cockpit 不会保留单独的用户列表,而是使用系统的用户。这些是您使用adduser
命令创建的用户。
您可以使用您在初始设置指南中创建的用户登录,也可以按照相同的步骤创建一个新用户。
登录表单有一个标记为Reuse my password for privileged tasks的复选框。
如果选中此选项sudo
,只要用户具有sudo
访问权限,您就可以在 Cockpit 中运行需要的命令。
Cockpit 界面具有三个主要区域。第一个是实时系统信息页面。通过找到左侧导航面板并单击仪表图标浏览到此页面。
单击此按钮将带您进入显示服务器 CPU、内存、网络和磁盘 I/O 的实时图表。
下一部分是详细信息和管理部分。单击左侧导航面板中的服务器图标导航到此部分。
Cockpit 的这一部分提供有关系统许多方面的详细信息,例如日志和系统文件。您还可以管理服务器的某些部分,例如添加和删除用户以及管理系统的存储。您将在本节中找到浏览器 bash 终端。
要编辑用户的 Cockpit 设置,请单击界面顶部的用户图标并选择帐户设置。您可以在此处更改界面语言、密码和电子邮件地址。
您现在已经从浏览器访问了 Cockpit 实例。
结论
在本教程中,您安装了 Cockpit 并使用您的域的 SSL 证书保护了您的连接。您现在可以使用浏览器从命令提示符查看实时资源使用、管理和访问您的服务器。
您可以在官方文档的帮助下阅读有关扩展 Cockpit 实例的更多信息。