本站包含联盟链接——如果你通过链接注册,我们可能获得佣金。 Affiliate links.

Ubuntu 24.04 LTS Droplet 设置指南 2026 — 快速上手

Ubuntu 24.04 LTS Droplet 设置指南 2026 — 快速上手

Ubuntu 24.04 LTS (Noble Numbat) 是 2026 年 DigitalOcean 新 Droplet 推荐使用的版本,提供长期安全支持直到 2029 年。本文涵盖所有必要的初始设置步骤:创建 Droplet、配置 SSH 密钥、创建非 root 用户以避免直接使用 root、启用防火墙、更新系统、设置时区和启用交换空间以适应 RAM 有限的机器。按照这些步骤,您的服务器从第一天起就将完全保护并准备好用于生产环境。

创建 Ubuntu 24.04 LTS Droplet

正确的 Droplet 初始化从一开始就创建针对您需求定制的机器开始。进入 DigitalOcean 控制面板,单击创建 > Droplets。选择镜像为 Ubuntu,确保这是 24.04 (LTS) x64 版本 — 不是每日构建或测试版本。LTS(长期支持)通过 2029 年获得安全更新,使其成为需要长期稳定性而不需要频繁版本升级的生产工作负载的理想选择。 接下来,选择适合您工作负载的计划。对于测试或运行轻量级静态/API 服务,基础共享 CPU 计划具有 1 GiB RAM / 1 vCPU / 25 GB SSD / 1,000 GiB 传输,每月 $6,通常就足够了。但是,如果您运行具有实际流量的网络应用程序或数据库,建议升级到 2 GiB RAM / 1 vCPU / 50 GB SSD / 2,000 GiB 传输,每月 $12,以避免不断耗尽交换空间。从一开始选择正确的大小可以省去之后调整大小的麻烦。 对于区域,泰国用户应选择 sgp1(新加坡),这是 DigitalOcean 15 个位置中最近的数据中心,确保延迟比美国或欧洲地区明显降低。如果您想分散风险或为南亚用户提供服务,班加罗尔 (blr1) 是次要选择。请注意,不能直接移动 Droplet 的区域 — 您必须从快照创建新的,所以第一次选择要正确。 在身份验证期间,在创建 Droplet 时直接选择 SSH 密钥而不是密码(SSH 密钥创建详情在下一部分)。启用监控,这是免费功能无需额外费用,以跟踪 CPU/RAM/磁盘指标以供日后查看。给您的 Droplet 一个有意义的主机名,例如 web-01-sgp1,然后单击创建 Droplet。 创建后,系统显示 Droplet 的公共 IPv4 地址 — 保存这个地址以便连接。使用本地终端中的 ssh root@your_droplet_ip 测试您的第一次连接。如果您成功连接并看到 Ubuntu 24.04 提示符,您的 Droplet 已准备好进行下一个安全配置步骤。

配置 SSH 密钥而不是密码

SSH 密钥远比密码安全得多,可以防御暴力破解攻击并消除每次连接时键入密码的需要。首先在您的本地计算机(不在 Droplet 上)生成密钥对,使用 ssh-keygen -t ed25519 -C "[email protected]"。系统会询问文件位置(默认 ~/.ssh/id_ed25519 就可以)和可选的密码短语以增强安全性。ed25519 算法比较旧的 RSA 更受推荐,因为它提供更短的密钥、更高的安全性和更快的性能。 如果您在创建 Droplet 时没有添加密钥,之后可以通过两种方式添加。第一种是使用 ssh-copy-id root@your_droplet_ip,它会自动将您的公钥复制到远程 ~/.ssh/authorized_keys。第二种是复制 ~/.ssh/id_ed25519.pub 的内容到您的 DigitalOcean 控制面板的设置 > 安全 > SSH 密钥,这样未来的 Droplet 会自动获得此密钥,无需重新复制。 一旦您确认 SSH 密钥可以工作(测试打开一个新会话而不关闭当前会话,以防出现问题),通过编辑 /etc/ssh/sshd_config 来禁用密码登录。设置 PasswordAuthentication no 并配置 PermitRootLogin prohibit-password,这样 root 只能通过密钥 SSH 登录,不能使用密码。然后用 systemctl restart ssh 重启 SSH 守护程序。 关键是,在成功打开新会话之前永远不要关闭原始终端会话。如果配置失败且您关闭了窗口,您会立即被锁定。如果发生这种情况,使用 DigitalOcean Droplet 控制台(Droplet 访问 > 启动 Droplet 控制台)直接通过浏览器访问服务器,绕过 SSH,这样您可以修复配置并恢复访问。

创建非 root 用户

直接以 root 身份运行日常操作是有风险的 — 一个错别字就可能损害整个系统。最佳做法是创建一个具有 sudo 权限的新用户。从 adduser deploy 开始,它会提示输入密码和基本信息(您可以通过按 Enter 来跳过非必要字段)。然后使用 usermod -aG sudo deploy 授予 sudo 访问权限。 一个经常被遗忘的步骤是将 SSH 密钥转移到新用户;没有这个,您无法 SSH 到该帐户。在一个命令中复制根 .ssh 目录到新用户:rsync --archive --chown=deploy:deploy ~/.ssh /home/deploy。这在单个操作中复制 authorized_keys 并正确设置所有权。 打开一个新终端并立即测试 ssh deploy@your_droplet_ip。登录后,使用 sudo apt update 验证 sudo 权限 — 它会提示输入 deploy 用户的密码,而不是 root 的。如果成功,您已准备好禁用直接 root 登录。 当确信新用户运行完美后,返回 /etc/ssh/sshd_config 并将 PermitRootLogin 从 prohibit-password 改为 no,然后再次运行 systemctl restart ssh。从这一点起,root 只能通过 sudo 或 Droplet 控制台访问。这大大减少了您的攻击面,因为扫描 root SSH 登录的机器人是最常见的互联网攻击模式。

启用基础 UFW 防火墙

UFW(简化防火墙)包装 iptables,使其比直接编写原始 iptables 规则简单得多。首先要设置的规则 — 在启用 UFW 之前一定要做 — 是允许 SSH,否则您会立即被锁定。使用 ufw allow OpenSSH(如果您已更改 SSH 端口,使用 ufw allow 22/tcp)。然后用 ufw enable 启用 UFW。系统会要求确认,因为它可能会中断当前会话;输入 y 来确认。 对于网络服务器,使用 ufw allow 80/tcpufw allow 443/tcp 打开 HTTP 和 HTTPS,或如果安装了 Nginx,使用 ufw allow "Nginx Full" 在一个命令中打开两者。使用 ufw status verbose 检查所有活动规则,它显示默认策略和所有开放端口。 为了增加安全性,使用 ufw limit OpenSSH 而不是简单的允许规则。这限制来自任何单个 IP 的连接尝试,减缓暴力破解攻击而无需额外工具。 请记住 UFW 仅在 Droplet 内部操作(基于主机的防火墙),而 DigitalOcean 云防火墙在网络边缘工作,在流量到达您的 Droplet 之前,它免费无需额外费用。一起使用两层(深度防御)比单独依赖其中一层更安全。如果 UFW 不小心被禁用或配置错误,云防火墙仍然作为备份防御存在。

要点总结: 始终先运行 ufw allow OpenSSH,然后 ufw enable 以避免锁定自己。

系统更新和时区配置

在实际使用中,基础安全到位后,将所有包更新到最新版本,因为 DigitalOcean 镜像可能是几周前创建的。运行 apt update && apt upgrade -y,其中 apt update 从存储库获取最新包列表,apt upgrade -y 自动升级所有包。升级后,通过查找 /var/run/reboot-required 检查是否需要重启 — 如果存在,内核或主要库更新需要重启。 为了避免不断手动运行 apt upgrade,安装 unattended-upgrades,Ubuntu 用于在后台自动应用安全更新的标准工具。使用 apt install unattended-upgrades -y 安装它,然后用 dpkg-reconfigure --priority=low unattended-upgrades 配置它。这可以降低新发现的漏洞带来的风险,而无需每天进行服务器维护。 另一个经常被忽视的细节是时区。Droplet 默认为 UTC,导致日志时间戳和 cron 作业与泰国时间不匹配。使用一个命令正确设置:timedatectl set-timezone Asia/Bangkok。无需手动编辑配置文件。用 timedatectl status 验证,它显示本地时间现在为 UTC+7。 从一开始正确设置时区对于具有计划 cron 作业或时间戳相关日志记录的系统很关键。在数据积累后更改它使跨多个日志文件进行时间相关问题的故障排除变得复杂得多。

  1. 创建新 Droplet 后立即使用 apt update && apt upgrade -y 更新系统。
  2. 通过查找 /var/run/reboot-required 检查是否需要重启。
  3. 安装 unattended-upgrades 以在后台自动应用安全更新。
  4. 使用单个命令设置时区:timedatectl set-timezone Asia/Bangkok。

为低内存 Droplet 启用交换空间

具有 512 MiB 或 1 GiB RAM 的小 Droplet 容易出现内存不足 (OOM) 问题,特别是在 apt upgrade 编译或内存密集型任务期间。启用交换空间提供安全缓冲,防止 OOM 杀手突然终止进程。虽然交换比真实 RAM 慢(使用磁盘),但这比应用程序即时崩溃要好。 使用 fallocate -l 2G /swapfile 创建 2GB 交换文件(如果您的文件系统不支持 fallocate,使用 dd if=/dev/zero of=/swapfile bs=1M count=2048)。为了安全起见,仅限 root 访问:chmod 600 /swapfile,因为此文件可能暂时包含来自 RAM 的敏感数据。 接下来,使用 mkswap /swapfile 将文件格式化为交换区域,然后用 swapon /swapfile 激活它。使用 swapon --showfree -h 验证成功,它显示具有配置大小的交换行。但这仅持续到重启。要在重启后保持交换,添加行 /swapfile none swap sw 0 0/etc/fstab — 一个经常被遗忘导致重启后交换神秘消失的步骤。 最后,调整 vm.swappiness 以获得最优性能。Ubuntu 默认值为 60,导致系统相当快速地使用交换。对于应该先耗尽 RAM 然后作为最后手段依赖交换的服务器,通过在 /etc/sysctl.conf 中添加 vm.swappiness=10 来降低至 10,然后用 sysctl -p 应用它,无需重启。

常见错误和故障排除

让我们意外的一点是:最常见的错误是在测试 SSH 密钥是否真的有效之前禁用密码身份验证或 root 登录,导致从服务器立即被锁定。修复方法是 DigitalOcean Droplet 控制台(访问 > 启动 Droplet 控制台),它直接通过您的浏览器连接而无需 SSH,因此您可以纠正 sshd_config 或防火墙配置错误并恢复访问。这是为什么本指南强调在每个更改前测试的原因。 第二个常见错误是在允许 OpenSSH 之前启用 UFW,立即中断当前连接并阻止新连接。预防很简单:总是先运行 ufw allow OpenSSH,然后 ufw enable。如果您不小心启用它而没有允许 SSH,使用 Droplet 控制台首先禁用 UFW,使用 ufw disable。 另一个常见陷阱是创建新用户但忘记添加到 sudo 组或转移 SSH 密钥,给出设置已完成的错误印象,当帐户仍然依赖于 root 时。始终在禁用 root 登录之前测试 ssh deploy@ipsudo whoami。 对于交换,常见的错误是忘记添加行到 /etc/fstab,导致每次重启后交换消失。简单的验证:在每次内核重启后运行 free -h 以确认交换仍处于活动状态。最后,选择错误的区域(例如美国的一个用于泰国用户)会造成不必要的延迟,不能通过移动 Droplet 来修复 — 您必须改为从快照创建一个新的。

  1. 由于配置错误的密码/root 登录通过 SSH 被锁定?使用 Droplet 控制台来修复它。
  2. 在允许 OpenSSH 之前启用 UFW 并失去连接?使用 Droplet 控制台来禁用 UFW。
  3. 创建了新用户但忘记 sudo 或 SSH 密钥?在禁用 root 登录前测试两者。
  4. 忘记添加行到 /etc/fstab?交换在重启后消失。

最佳做法

完成本指南中所有设置步骤后,立即创建一个 Droplet 快照以将强化配置保存为黄金镜像。快照每月成本为 $0.06/GiB — 相比节省的时间非常便宜,如果您需要重新构建。快照让您在未来快速创建相同的预配置 Droplet(例如,在扩展期间),而无需每次重复 SSH 密钥、用户创建、防火墙和时区步骤。 总是在 UFW 旁边启用 DigitalOcean 云防火墙作为额外层,因为它是免费的并在流量到达您的 Droplet 之前在网络边缘操作。这保护您的服务器并减少处理负载。同时启用监控并设置警报策略以在 CPU 或磁盘使用接近限制时通过电子邮件通知您 — 两个免费功能都会在用户注意到之前提醒您问题。 对于 SSH 密钥,为每个用于连接的设备生成单独的密钥(例如,工作笔记本、家用台式机),而不是到处使用一个密钥。如果设备丢失或遭到破坏,您可以仅从 authorized_keys 或控制面板删除该密钥,使其他设备不受影响。 对于重复创建像这样的 Droplet 的团队,考虑将整个设置作为 cloud-init 用户数据脚本编写,在通过高级选项创建 Droplet 时附加它。这在第一次启动时自动化用户创建、防火墙配置、时区设置和交换初始化,消除手动步骤和重复期间人为错误的风险。最后,不要忘记配置 unattended-upgrades 以持续运行 — 服务器安全不是一次性任务,而是在 Droplet 整个生命周期中的持续责任。

领取 $200 免费额度 →

常见问题(FAQ)

为什么本指南推荐 Ubuntu 24.04 LTS 而不是其他版本?
Ubuntu 24.04 (Noble Numbat) 是一个 LTS 发布版本,安全支持直到 2029 年,适合需要长期稳定性而无需频繁版本升级的生产服务器。这与具有较短支持窗口的中间发布版本不同。
我禁用了密码身份验证,现在无法 SSH 进入。我该怎么办?
使用 DigitalOcean Droplet 控制台(访问 > 启动 Droplet 控制台)直接通过浏览器连接而无需 SSH。这让您可以修复 /etc/ssh/sshd_config 或防火墙问题,然后正常返回 SSH。
对于这个基本设置,我需要购买保留 IP 吗?
不需要。每个 Droplet 都会获得一个免费的公共 IPv4 地址。保留 IP 仅对 Droplet 之间的故障转移场景有用。当附加到活动 Droplet 时,它们是免费的;只有当保留但未附加到任何 Droplet 时,您才需支付每月 $5。
如果我的 Droplet 已经有足够的 RAM,我仍然需要交换吗?
是的,仍然建议使用。即使 RAM 通常充足,交换也作为安全缓冲,以防内存使用意外激增(例如,在编译或大型数据导入期间),防止 OOM 杀手突然终止进程。
我可以同时使用 UFW 和 DigitalOcean 云防火墙吗?区别是什么?
是的,推荐同时使用两者。UFW 在 Droplet 内操作(基于主机);云防火墙在网络边缘工作,流量到达您的服务器之前。两者都是免费的,分层使用(深度防御)比单独使用要更安全。
每次 apt upgrade 后我都需要重启吗?
不一定。检查 /var/run/reboot-required 是否存在。如果存在,内核或主要库更新需要重启才能使更改生效。如果不存在,常规包更新会立即应用而无需重启。