如何在 Debian 10 上安装 Cockpit

作为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 的访问端口909080您将在下一步中用于获取 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/certbotln

  • 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 证书有几个要求:

  1. 证书文件必须在同一文件中包含证书和私钥。
  2. 此证书和密钥文件必须位于/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

将以下代码添加到此文件中:

证书更新.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]部分的末尾添加以下行

cockpit.your_domain.conf
post_hook = /etc/cockpit/certificate-renewal.sh

接下来,使用以下命令测试新配置是否正常工作:

  • sudo certbot renew --dry-run

这些--dry-run选项告诉 Certbot 执行证书续订,但不对您的证书进行任何更改。您将在输出底部收到以下几行:

Output
Running 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 URL
https://cockpit.your_domain:9090

Cockpit 不会保留单独的用户列表,而是使用系统的用户。这些是您使用adduser命令创建的用户

您可以使用您在初始设置指南中创建的用户登录,也可以按照相同的步骤创建一个新用户。

登录表单有一个标记为Reuse my password for privileged tasks的复选框

显示 Cockpit 登录字段的图像

如果选中此选项sudo,只要用户具有sudo访问权限,您就可以在 Cockpit 中运行需要的命令

Cockpit 界面具有三个主要区域。第一个是实时系统信息页面。通过找到左侧导航面板并单击仪表图标浏览到此页面。

显示左侧导航面板中的仪表图标的图像

单击此按钮将带您进入显示服务器 CPU、内存、网络和磁盘 I/O 的实时图表。

下一部分是详细信息和管理部分。单击左侧导航面板中的服务器图标导航到此部分。

突出显示详细管理图标的图像

Cockpit 的这一部分提供有关系统许多方面的详细信息,例如日志和系统文件。您还可以管理服务器的某些部分,例如添加和删除用户以及管理系统的存储。您将在本节中找到浏览器 bash 终端。

要编辑用户的 Cockpit 设置,请单击界面顶部的用户图标并选择帐户设置您可以在此处更改界面语言、密码和电子邮件地址。

显示帐户设置面板的图像

您现在已经从浏览器访问了 Cockpit 实例。

结论

在本教程中,您安装了 Cockpit 并使用您的域的 SSL 证书保护了您的连接。您现在可以使用浏览器从命令提示符查看实时资源使用、管理和访问您的服务器。

您可以在官方文档的帮助下阅读有关扩展 Cockpit 实例的更多信息

觉得文章有用?

点个广告表达一下你的爱意吧 !😁