如何在Debian10上安装Cockpit
作为 Write for DOnations 计划的一部分,作者选择了 Free and Open Source Fund 来接受捐赠。
介绍
Cockpit 是一个服务器管理仪表板,可让您实时查看服务器状态。 它提供有关 CPU 负载、文件系统统计信息、进程和更多信息的信息。 Cockpit 的好处之一是,当您未登录控制面板时,它不会消耗任何服务器资源——该服务仅在您浏览控制面板时启动。
您可以使用 Cockpit 执行服务器管理任务,例如管理用户和解决网络问题。 您还可以从计算机或手机上的浏览器访问终端。 Cockpit 使用您系统的用户进行登录和系统管理,使用 sudo
进行权限升级。 通过这种方式,Cockpit 不会通过创建第二组 Cockpit 专用用户来为您的服务器引入额外的安全考虑。
在本教程中,您将在 Debian 10 服务器上部署一个安全的 Cockpit 服务器管理仪表板。
先决条件
在开始本指南之前,您需要以下内容:
- 使用 Initial Server Setup with Debian 10 指南配置的一台 Debian 10 服务器。 您应该按照指南中的说明配置和启用 UFW 防火墙。
- 指向您将用于访问 Cockpit 的服务器的域名。 如果您需要有关指向域名的信息,请参阅 域和 DNS 指南。 我们将在本教程中使用示例域名
cockpit.your_domain
。 在开始之前,您的域必须指向您的服务器。
以启用 sudo 的非 root 服务器身份登录到您的服务器以开始。
第 1 步 — 安装 Cockpit
在此步骤中,您将安装 Cockpit 并打开 Cockpit 在防火墙中使用的端口。
首先,使用 apt
执行系统更新。 这将确保您的服务器具有最新的软件包,并避免在 Cockpit 安装过程中出现任何错误:
sudo apt update sudo apt upgrade
接下来,安装 Cockpit:
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 正常运行所必需的。
接下来,使用 ln 实用程序从 /usr/bin/certbot
创建一个符号链接,以指向 /snap/bin/certbot
中快速安装的 Certbot 二进制文件:
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 会询问您是否要与 Electronic Frontier Foundation(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
将以下代码添加到此文件中:
证书更新.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 文件权限,请参阅 An Introduction to Linux Permissions 了解更多信息。
接下来,您将通过在 /etc/letsencrypt/renewal/cockpit.your_domain.conf
中添加一行来配置 Certbot 在更新 SSL 证书时运行此脚本。
使用文本编辑器打开此文件:
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 执行证书续订,但不对您的证书进行任何更改。 您将在输出的底部收到以下行:
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 界面配置为侦听端口 9090
,因此您需要在输入浏览器的 URL 末尾指定此端口。 这是您的 Cockpit 实例的 URL:
Cockpit Login URLhttps://cockpit.your_domain:9090
Cockpit 不保留单独的用户列表,而是使用系统的用户。 这些是您使用 adduser
命令创建的用户。
您可以使用在初始设置指南中创建的用户登录,也可以按照相同的步骤创建新用户。
登录表单有一个标记为 将我的密码用于特权任务 的复选框。
如果选中此选项,只要用户具有 sudo
访问权限,您就可以在 Cockpit 中运行需要 sudo
的命令。
Cockpit 界面包含三个主要区域。 首先是实时系统信息页面。 找到左侧导航面板并单击仪表图标,浏览至此页面。
单击此按钮将带您进入显示服务器 CPU、内存、网络和磁盘 I/O 的实时图表。
下一部分是 详细信息和管理 部分。 通过单击左侧导航面板中的服务器图标导航到此部分。
Cockpit 的这一部分提供了有关系统许多方面的详细信息,例如日志和系统文件。 您还可以管理服务器的某些部分,例如添加和删除用户以及管理系统的存储。 您将在本节中找到浏览器 bash 终端。
要编辑用户的 Cockpit 设置,请单击界面顶部的用户图标,然后选择 Account Settings。 您可以在此处更改界面语言、密码和电子邮件地址。
您现在已经从浏览器访问了 Cockpit 实例。
结论
在本教程中,您安装了 Cockpit 并使用您的域的 SSL 证书保护您的连接。 您现在可以使用浏览器从命令提示符查看实时资源使用、管理和访问您的服务器。
您可以在 官方文档 的帮助下阅读有关扩展 Cockpit 实例的更多信息。