作者选择了 自由和开源基金作为 写给捐款计划的一部分接受捐款。
介绍
Cockpit是一个服务器管理仪表板,允许您实时查看服务器的状态。它提供了关于CPU负载,文件系统统计,流程和其他信息的信息。Cockpit的优点之一是,当您未登录控制面板时,它不会消耗任何服务器资源 - 该服务只在您浏览控制面板时开始。
您可以使用 Cockpit 执行服务器管理任务,例如管理用户和解决网络问题. 您也可以从计算机或手机上的浏览器访问终端。 Cockpit 使用sudo
来登录和管理系统的用户,以便升级特权。
在本教程中,您将在 Debian 10 服务器上部署一个安全的 Cockpit 服务器管理仪表板。
前提条件
在您开始本指南之前,您将需要以下内容:
- 一个 Debian 10 服务器配置使用 Debian 10 初始服务器设置指南. 您应该根据指南所述配置和启用 UFW 防火墙。
- 指向您的服务器的域名,您将使用它来访问 Cockpit。 如果您需要有关指向域名的信息,请参阅 Domains and DNS指南。 在本教程中,我们将使用示例域名
cockpit.your_domain
。
登录到您的服务器作为 sudo 启用的非根服务器开始。
步骤 1 - 安装驾驶舱
在此步骤中,您将安装Cockpit并打开Cockpit在您的防火墙中使用的端口。
首先,使用apt
进行系统更新,以确保您的服务器具有最新的包,并在驾驶舱安装过程中避免任何错误:
1sudo apt update
2sudo apt upgrade
接下来,安装驾驶舱:
1sudo apt install cockpit
现在,用 mkdir
命令创建一个目录:
1sudo mkdir -p /usr/lib/x86_64-linux-gnu/udisks2/modules
您使用-p
选项,以便mkdir
以一个召唤来创建多个目录级别。
您创建了此目录,以阻止在您的驾驶舱实例中显示无害但引人注目的警告. 此警告会显示,因为 udisks2
实用程序无法找到 /usr/lib/x86_64-linux-gnu/udisks2/modules
目录,除非安装了额外的 udisks2
,否则默认情况下不会创建。
最后,打开驾驶舱的访问端口9090
和端口80
,您将在下一步获得SSL证书:
1sudo ufw allow 9090
2sudo ufw allow 80
您现在已经安装了 Cockpit 并打开了已签名的 SSL 证书的端口,您将在下一步获得该证书。
第2步:获得SSL证书
在此步骤中,您将获得由 Let's Encrypt使用 Certbot实用程序发行的 SSL 证书。
Certbot以Ubuntu snap套件的形式分发,因此snap
实用程序默认不安装在Debian 10上,因此您必须将其安装为snapd
套件的一部分:
1sudo apt install snapd
接下来,运行以下两个命令,以确保您正在运行snap
的最新版本:
1sudo snap install core
2sudo snap refresh core
现在,用以下命令安装Certbot snap:
1sudo snap install --classic certbot
这里的 - 经典
选项安装了Certbot snap 在经典模式 - 这减少了限制,并允许访问更多的系统资源,这对于Certbot的正确运作是必要的。
接下来,从 /usr/bin/certbot
创建一个符号链接,以指向即时安装的 Certbot 二进制在 /snap/bin/certbot
上的 ln
实用程序:
1sudo ln -s /snap/bin/certbot /usr/bin/certbot
你需要创建这个符号链接,因为在Linux上,并非所有实用程序都知道他们应该搜索/snap/bin/
的程序文件;而/usr/bin/
是用户安装的程序的标准位置。
<$>[注] 注: 一个符号链接在Linux上工作,就像在Windows上工作一样,它是从位置到文件的指针。
现在你已经安装了Certbot实用程序,你将使用它来注册和下载SSL证书,使用以下命令:
1sudo certbot certonly --standalone --agree-tos --email your_email -d cockpit.your_domain
你已经使用了以下选项:
certonly
: 注册并下载 SSL 证书而不对系统进行其他更改。--standalone
: 使用 Certbot 内置的 Web 服务器来注册该证书。--agree-tos
: 自动同意服务条款(ToS)。--email your_email
: 使用您的电子邮件地址来注册该证书。
当您运行此命令时,Certbot 会询问您是否希望与电子边境基金会(https://www.eff.org/)(Certbot 实用程序的开发者)共享电子邮件地址,以便发送非必需的电子邮件。
当 Certbot 实用程序完成注册时,它将将您的证书文件保存到 /etc/letsencrypt/live/cockpit.your_domain
。
Cockpit 对使用 SSL 证书有几个要求:
- 证书文件必须包含在同一文件中的证书和私钥。
2 此证书和密钥文件必须位于
/etc/cockpit/ws-certs.d
目录,并在.cert
. 中结束。
因此,您需要使用您注册的SSL证书创建证书和密钥文件,以便在Cockpit中使用它。
首先,使用以下命令创建组合证书和密钥文件:
1sudo 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
权限的壳中。
cat
命令将证书和密钥文件的内容打印到标准输出中,然后将此内容重定向到一个新的文件中。
接下来,您将创建Certbot运行的更新后脚本,该脚本将与更新后的证书重新创建证书和密钥文件,并重新启动驾驶舱服务,以便它开始使用它。
在 /etc/cockpit/certificate-renewal.sh
打开脚本,使用文本编辑器:
1sudo nano /etc/cockpit/certificate-renewal.sh
将以下代码添加到此文件中:
1[label certificate-renewal.sh]
2#!/usr/bin/env bash
3
4echo "Recreating Cockpit SSL Certificate"
5cat /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
6
7echo "Restarting Cockpit"
8systemctl restart cockpit.socket
你已经明确了以下几点:
# !/usr/bin/env bash
: 這是 shebang,並告訴Linux使用哪個程式執行脚本. 在這種情況下,你規定了 GNU Bash shell.echo
:這項命令打印了下列訊息。當你測試證書更新時,你會收到此訊息。cat
:這是你在教程中先前執行的同一命令來創建認證和鍵檔案。systemctl 重新啟動 cockpit.socket
: 這次重新啟動Cockpit以便使用新證書。
通过使用 chmod更改其权限来执行此证书:
1sudo chmod 755 /etc/cockpit/certificate-renewal.sh
如果您对 Linux 文件权限不确定,请参阅 An Introduction to Linux Permissions以获取更多信息。
接下来,您将配置 Certbot 运行此脚本,当它更新 SSL 证书时,将一个行添加到 /etc/letsencrypt/renewal/cockpit.your_domain.conf
。
使用文本编辑器打开此文件:
1sudo nano /etc/letsencrypt/renewal/cockpit.your_domain.conf
在[renewalparams]
部分的末尾添加下列行:
1[label cockpit.your_domain.conf]
2post_hook = /etc/cockpit/certificate-renewal.sh
接下来,测试新配置是否使用以下命令:
1sudo certbot renew --dry-run
干
选项告诉Certbot进行证书更新,但不会对您的证书进行任何更改,您将在输出底部收到以下行:
1[secondary_label Output]
2Running post-hook command: /etc/cockpit/certificate-renewal.sh
3Output from post-hook command certificate-renewal.sh:
4Recreating Cockpit SSL Certificate
5Restarting Cockpit
这会告诉你更新脚本过程在SSL证书更新发生时是正确的。
最后,重新启动驾驶舱来加载SSL证书:
1sudo systemctl restart cockpit.socket
您现在已经完全配置了 Cockpit 实例,您已经准备好登录。
步骤 3 – 访问驾驶舱
您已配置 Cockpit 接口以便在端口 9090
上聆听,因此您需要在您输入浏览器的 URL 末尾指定该端口。
1[secondary_label Cockpit Login URL]
2https://cockpit.your_domain:9090
Cockpit 不会保留单独的用户列表,而是使用系统的用户. 这些是您用adduser
命令创建的用户。
您可以与您在初始设置指南中创建的用户登录,或按照相同的程序创建新的用户。
登录表格有一个标记为 重复使用我的密码特权任务 的检查框。
如果您检查此选项,您将能够在驾驶舱内运行需要sudo
的命令,只要用户有sudo
访问权限。
驾驶舱接口有三个主要区域. 第一是实时系统信息页面. 通过找到左侧导航面板并点击计时图标来浏览此页面。
点击此处将带您到实时图表,显示您的服务器的CPU、内存、网络和磁盘I/O。
下一个部分是详细信息和管理
部分,请点击左侧导航面板中的服务器图标来导航。
这个部分的驾驶舱提供有关您的系统的许多方面的详细信息,如日志和系统文件. 您还可以管理您的服务器的一些部分,如添加和删除用户和管理系统的存储。
要编辑用户的驾驶舱设置,请点击用户图标在界面顶部,然后选择 帐户设置 . 在这里,您可以更改界面语言,密码和电子邮件地址。
您现在已经从您的浏览器访问了您的 Cockpit 实例。
结论
在本教程中,您安装了Cockpit,并通过您的域的SSL证书来保护您的连接,现在您可以使用您的浏览器查看实时资源使用,管理和访问您的服务器从命令提示。
您可以阅读更多关于使用 官方文档扩展您的驾驶员实例的信息。