发布于2025年12月5日12月5日 DigitalOcean 是一个类似于AWS、Microsoft Azure、Google Cloud Platform 等的云提供商。他们提供不同Linux 发行版(例如Debian、Ubuntu、FreeBSD 等)的实例,称为“droplet”。与AWS 类似,DigitalOcean 在世界各地都有数据中心,有时在每个国家/地区都有多个数据中心。 然而,有一项特殊功能使他们有别于竞争对手。不久前,他们添加了对自定义映像的支持,允许用户导入虚拟机磁盘并将其用作Droplet。这对我们来说是完美的,因为我们可以在他们的云中使用我们自己的Kali Linux 版本。 虽然可以加载官方的Kali Linux 虚拟映像,但效率不是很高。相反,我们将构建一个轻量级的Kali 安装,以使其正常运行。 5 GB 硬盘空间,因此如果您要继续操作,请确保有足够的硬盘空间。 首先,我们将确保系统是最新的: 易于更新 apt -y 全面升级 如果安装了新内核,请在继续之前重新启动系统,然后继续启动build: apt -y 安装git live-build cdebootstrap devscripts git克隆https://gitlab.com/kalilinux/build-scripts/live-build-config.git cd 实时构建配置 ./build.sh --variant 最小--verbose 构建ISO 需要一段时间,因为它需要下载大量包并组装它们。与此同时,享受一杯美味的咖啡。或者茶。 “–verbose”选项将在屏幕上显示构建日志。但是可以将其删除,而是可以在build.log 文件中跟踪进度: tail -f 构建.log 一旦启动“build.sh”的终端返回提示符,ISO 就已准备就绪,可以在images/目录中找到。 生成 ISO 构建ISO 后,我们现在可以开始构建虚拟机。创建一个新的虚拟机,将操作系统设置为最新的Debian 64 位并分配20 GB 硬盘。如果需要,Kali 培训网站上有详细的设置说明。将虚拟磁盘存储为动态分配的单个文件非常重要。其余的(例如CPU 和RAM 数量)并不重要,因为只有磁盘文件会上传到DigitalOcean。 磁盘大小很重要,因为计费是基于自定义映像的磁盘大小。它还会影响我们可以创建的实例的选择。假设创建了40 GB 硬盘,则在5 美元/月级别创建实例将失败,因为其最大硬盘大小为25 GB。在这种情况下,我们将被迫对具有50 GB 磁盘的实例使用10 美元/月的选项。别担心,即使磁盘有20 GB,它也会根据所选的Droplet 计划进行扩展。 安装时选择手动分区,设置如下图,所有文件在一个分区,无交换文件。 创建虚拟机 安装完成并重新启动后,我们在控制台登录并更新系统: 易于更新 apt -y 全面升级 如果您在“apt update”期间没有看到它通过镜像,则您可能在安装过程中不小心忘记添加网络镜像。按照Kali-Docs 站点上的说明进行修复并再次运行这两个命令。 更新系统 为了让DigitalOcean 为我们配置系统,我们需要安装cloud-init 包: apt -y 安装cloud-init echo 'datasource_list: [ConfigDrive、DigitalOcean、NoCloud、无]' /etc/cloud/cloud.cfg.d/99_digitalocean.cfg systemctl 启用cloud-init 安装所需的软件包 引导时,磁盘已连接并映射为sda1。然而,对于液滴,它被视为vda1。为了解决这个问题,我们需要将/boot/grub/grub.cfg: 中的所有sda1 实例更改为vda1 sed -i 's/sda1/vda1/g' /boot/grub/grub.cfg 更新配置文件后,我们可以运行“update-grub”来更新系统: 更新grub 更新 GRUB 由于我们需要使用SSH 连接到DigitalOcean 上的系统,因此还需要安装(并启用)openssh-server 软件包: apt -y 安装openssh-server systemctl 启用ssh.service 创建标准Droplet 时,您可以选择是否使用SSH 密钥。但是,当使用自定义映像时,这不是一个选项,并且必须使用SSH 密钥。为此,DigitalOcean要求我们删除root密码: 密码-d root 我们还需要创建一个/root/.ssh 文件夹: mkdir /root/.ssh 准备 SSH 在完成虚拟机之前,我们运行一些命令来清理: 自动删除 自动清洁 rm -rf /var/log/* 历史-c 此时,我们的虚拟机已准备就绪,因此我们运行“poweroff”来关闭系统: 关机 清理 在虚拟机文件夹中,找到.vmdk 文件,然后使用bzip2、gzip 或zip 对其进行压缩,准备上传到DigitalOcean: bzip2 kali.vmdk 登录您的DigitalOcean 帐户。在左侧的“管理”部分中,单击“图像”,然后选择“自定义图像”选项卡。 从那里,我们上传压缩的磁盘映像。我们将其命名为Kali,将其标记为Debian,然后选择要将其上传到的区域和数据中心。请注意,上传到某个位置后,Droplet 只能在该位置启动,这是自定义图像的当前限制。此阶段要记住的另一件事是上传的图像会消耗磁盘空间,DigitalOcean 将根据磁盘使用情况进行计费。 正在上传 完成后,“已上传”列将显示上传时间。现在我们将单击图像的“更多”选项并选择“启动液滴”。 您将进入Droplet 设置,您可以在其中选择Droplet 计划、SSH 密钥以及启动它的项目。由于这是自定义映像,因此需要使用SSH 密钥。您可以选择现有密钥,也可以通过单击“新SSH 密钥”上传新密钥,这将打开以下屏幕,您可以在其中粘贴公钥并将其命名为: 完成后,点击“创建”,如下图所示。然后,它将带您返回仪表板(管理Droplet),其中列出了所有Droplet。由于我们使用的是SSH 密钥,因此DigitalOcean 不会发送包含Droplet 凭据的电子邮件。 几秒钟内,IP 显示后,我们的Droplet 就准备好了。为了进行连接,我们需要使用我们创建的SSH 私钥(在本例中称为MY_KEY): user@computer:~$ ssh -i MY_KEY [emailprotected] 无法确定主机“192.168.1.1 (192.168.1.1)”的真实性。 ECDSA 密钥指纹为SHA256:d83fcd43d25e2a7edd291666160b47360cc85870ded。 您确定要继续连接吗(是/否)?是的 警告: 已将“IP”(ECDSA) 永久添加到已知主机列表中。 Linux kali-s-1vcpu-1gb-nyc3-01 4.19.0-kali5-amd64 #1 SMP Debian 4.19.37-2kali1 (2019-05-15) x86_64 Kali GNU/Linux 系统中包含的程序是自由软件; 每个程序的确切分配条款在 /usr/share/doc/*/copyright 中的各个文件。 Kali GNU/Linux 绝对不提供任何保证 适用法律允许。 现在我们有了一个很好的、最小的Kali Linux 安装,我们可以根据需要进行部署和自定义: root@kali-s-1vcpu-1gb-nyc3-01:~# lsb_release -a 没有可用的LSB 模块。 经销商ID: 卡利 描述: Kali GNU/Linux 滚动 发布: 2019.2 代号: 不适用 root@kali-s-1vcpu-1gb-nyc3-01:~# uname -a Linux kali-s-1vcpu-1gb-nyc3-01 4.19.0-kali5-amd64 #1 SMP Debian 4.19.37-2kali1 (2019-05-15) x86_64 GNU/Linux root@kali-s-1vcpu-1gb-lon1-01:~# free -h 可用的免费共享缓冲区/缓存总数 内存: 987Mi 51Mi 527Mi 1.0Mi 407Mi 790Mi 交换: 0B 0B 0B
创建帐户或登录后发表意见