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

Debian Droplet 设置指南 2026 — 入门

Debian Droplet 设置指南 2026 — 入门

本指南逐步讲解如何在 DigitalOcean 上创建 Debian Droplet 并设置基本安全性,重点强调 Debian 和 Ubuntu 之间的关键差异 — 即 sudo 和 ufw 都未预安装,且没有 snap 生态系统。适合需要稳定服务器、在较长部署周期内需要细粒度包控制的用户。

为什么选择 Debian 而不是 Ubuntu

Debian 是 Ubuntu 基于其构建的上游 Linux 发行版。在决定之前需要了解的关键差异是发行周期和包维护哲学。Debian 大约每 2 年发布一个新的稳定版本(目前是 Debian 12,代号 Bookworm),稳定分支中的包在发布前经过彻底测试,并在整个分支的生命周期内保持相同的版本。相比之下,Ubuntu 也是每 2 年发布一个 LTS 版本,但倾向于持续将较新的包推送到 backports 和 PPAs。因此,Debian 适合需要最大版本稳定性的工作负载 — 比如无法容忍频繁破坏性更改的长期运行数据库服务器 — 而 Ubuntu 擅长提供更新的包和许多软件供应商倾向于作为分发渠道的 snap 生态系统。在 DigitalOcean Droplets 上的一个明显差异是 Debian 没有预安装 snapd,缺少默认的 sudo 包,这类似于 Ubuntu,但这是初学者经常忽视的细节:当他们在启动后立即输入 sudo apt update 时,他们在第一行就会遇到"command not found"。Debian 也因为没有商业义务而值得注意;该项目由志愿社区成员维护,没有订阅要求或内置到操作系统中的遥测技术,不像某些 Ubuntu Pro 功能。对于已经在其他环境(如 Raspberry Pi OS 或旧的办公服务器)中熟悉 Debian 的用户,在 Droplets 上选择 Debian 可以使现有工作流和自动化脚本立即应用,无需翻译。这都不意味着 Debian 在技术上优于或劣于 Ubuntu,而是代表包新鲜度和版本稳定性之间的权衡 — 本指南重点关注的区别:Debian 和 Ubuntu 之间哪些初始设置步骤真正不同,而不仅仅是命令重命名。

  1. Debian 每 ~2 年发布一个稳定版本,并在分支生命周期内维护包版本
  2. Debian Droplet 缺少 snapd,sudo 和 ufw 都未预安装,与 Ubuntu 不同
  3. 没有商业义务或内置于操作系统的遥测技术
  4. 适合需要版本稳定性的工作负载,如长期存在的数据库服务器

创建 Debian Droplet

值得强调的是——首先登录 DigitalOcean 控制面板并点击 Create > Droplets。在 Choose an image 下选择 Debian 选项卡,查看 DigitalOcean 提供的最新稳定版本(目前是 Debian 12)。接下来,选择尽可能靠近实际最终用户的地区。对于泰国用户,sgp1(新加坡)最近,blr1(班加罗尔)是备选。对于 Droplet 大小,根据工作负载选择。对于测试或小型网站,从 $6/月的 Basic Shared CPU 计划开始(1 GiB RAM、1 vCPU、25 GB SSD、1,000 GiB 传输)是足够的。对于真实流量或多个并发进程,$12/月(2 GiB RAM、1 vCPU、50 GB SSD、2,000 GiB 传输)或 $24/月(4 GiB RAM、2 vCPU、80 GB SSD、4,000 GiB 传输)的计划更舒适。(定价截至 2026 年 7 月 — 请在提供者的网站上验证当前费率。)在 Authentication 下,始终选择 SSH Key 而不是 Password(在下一部分中介绍)。如果您还没有密钥,可以稍后添加。建议在创建时启用的选项是 Monitoring(免费,无额外费用),它会追溯记录 CPU/RAM/Disk/Bandwidth 指标,无需稍后进行单独安装。设置有意义的主机名(如 debian-web-01),然后点击 Create Droplet。配置通常需要约 1 分钟。计费按秒计算,最少 60 秒或 $0.01 每次会话,取较高者。一旦 Droplet 达到 Active 状态,您会收到一个 IPv4 地址并可以立即 SSH 进去。新 DigitalOcean 用户可以通过 此推荐链接注册以获得 $200 免费额度,有效期 60 天(需要信用卡或 PayPal),让您在试用期间免费遵循本指南。

配置 SSH 密钥并禁用密码登录

应在创建 Droplet 之前或之后立即设置 SSH 密钥,因为密码身份验证是最常见的暴力破解攻击向量。首先在本地计算机上使用 ssh-keygen -t ed25519 -C "[email protected]" 生成密钥对。系统会要求输入文件位置(默认值可以)和密码短语,建议设置以添加额外的安全层。如果您在 Droplet 创建期间没有附加公钥,请使用 ssh-copy-id root@YOUR_DROPLET_IP 复制它,或将 ~/.ssh/id_ed25519.pub 的内容粘贴到 DigitalOcean 控制面板的 Settings > Security > SSH Keys 下。接下来,使用 ssh root@YOUR_DROPLET_IP 首次 SSH 进入 Droplet,以在禁用密码身份验证之前验证密钥是否有效。确认后,编辑 /etc/ssh/sshd_config 并设置 PasswordAuthentication no。如果您已经创建了具有 sudo 权限的非 root 用户(下一部分),还可以设置 PermitRootLogin no 以完全禁用直接 root 登录。与 RHEL/CentOS 系统的关键区别:在 Debian 上,SSH 守护程序服务名为 ssh,而不是 sshd。因此,重启命令必须是 systemctl restart ssh。由于习惯从其他系统输入 systemctl restart sshd 会立即返回"Unit sshd.service not found"。在每次重启之前,运行 sshd -t 以对配置文件进行语法检查,防止打字错误破坏服务并通过 SSH 将您锁定的情况。最后,始终打开新的 SSH 会话以测试密钥登录,然后再关闭您仍然登录的原始窗口 — 此保护措施让您可以在不失去访问权限的情况下修复任何配置错误。

创建非 root 用户并配置 sudo

这是 Debian 与 Ubuntu 在初始设置期间最明显不同的地方。Ubuntu Droplets 预安装了 sudo 包,但 Debian 基础镜像没有。如果您以 root 身份登录并立即输入 sudo apt update,您将遇到 -bash: sudo: command not found。您必须先安装它,在以 root 身份登录时,使用 apt update && apt install sudo -y。完成后,使用 adduser deploy 创建新用户(用您首选的用户名替换"deploy")。此命令与 useradd 不同,它是一个交互式 Debian 向导,询问密码和其他详细信息(全名、房间号等 — 全部可选),自动创建主目录和默认配置。这比 useradd -m 加手动设置简单得多。接下来,使用 usermod -aG sudo deploy 将用户添加到 sudo 组以授予管理权限。经常被遗忘的步骤是将 SSH 密钥从 root 复制到新用户,因为 authorized_keys 是按用户在主目录中的。使用 rsync --archive --chown=deploy:deploy /root/.ssh /home/deploy 完成此操作,或手动创建目录并复制文件,使用正确的权限:chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys,因为 SSH 拒绝权限过于宽松的文件。使用 ssh deploy@YOUR_DROPLET_IP 测试登录,并使用 sudo whoami 验证 sudo 是否有效 — 在提示输入 deploy 用户的密码(非 root 的)后,它应该返回"root"。如果您想让 sudo 停止要求密码,可以在 /etc/sudoers.d/ 下添加文件,但不建议用于生产,因为它会削弱安全性。只有在完全确认新用户与 SSH 密钥和 sudo 都能正常工作之后,才应该回到前一部分并禁用 PermitRootLogin。

要点总结: Debian 没有预安装 sudo;首先以 root 身份运行 apt install sudo -y

使用 ufw 设置防火墙

与 sudo 一样,ufw(Uncomplicated Firewall)在 Debian 基础镜像上没有预安装,必须首先使用 sudo apt install ufw -y 安装。最关键的预防措施是在启用防火墙之前允许 SSH 端口;否则,启用防火墙时会立即被锁定,因为您当前的 SSH 会话将被切断,新连接将被阻止。安全的步骤是 sudo ufw allow OpenSSH(有效,因为 Debian 预先注册了 openssh-server 配置文件),或如果您已将 SSH 更改为不同的端口,请使用 sudo ufw allow 2222/tcp 加上您的实际端口号。对于网络服务器,添加 sudo ufw allow 80/tcpsudo ufw allow 443/tcp,或如果 Nginx 已安装并注册了其配置文件,则使用 sudo ufw allow "Nginx Full"。规则完成后,使用 sudo ufw enable 启用防火墙。系统会要求确认,因为它可能会中断您的会话 — 如果您已经允许 SSH,可以安全地回答"y"。使用 sudo ufw status verbose 检查状态和所有规则,其中应显示 SSH、端口 80 和 443 为 ALLOW。除了操作系统级的 ufw,DigitalOcean 还提供免费的 Cloud Firewall,无需额外费用,在网络层面运行,在流量到达 Droplet 之前进行操作。优势是纵深防御:即使 ufw 配置错误,Cloud Firewall 仍然会保护您。对于任何公开面向的 Droplet,强烈建议并行配置 ufw 和 Cloud Firewall 规则,而不是仅依赖于其中一个。

使用 apt 更新系统

基本安全设置完成后立即运行您的第一次系统更新。从 sudo apt update 开始以从存储库刷新包索引(这不会更新软件,仅更新列表)。接下来使用 sudo apt full-upgrade -y 而不是普通 apt upgrade。区别在于 full-upgrade 更彻底地处理依赖关系更改,可以删除冲突的旧包以完成更新,而常规 upgrade 会跳过具有复杂依赖关系的包,可能会留下安全补丁不完整。如果在此周期中更新了内核,请检查 /var/run/reboot-required 或安装 needrestart 以查看哪些服务需要重启或是否需要完全重启。在方便的时间使用 sudo reboot 重启以激活新内核。Debian 的一个关键区别:Debian Droplets 不包括 snapd,除非真正必要,否则不建议安装,因为 snap 是 Ubuntu 中心的,在小型服务器上不必要地消耗资源。如果您需要标准 apt 存储库中没有的包,Debian 替代方案包括 backports 存储库(通过 sources.list 选择)或从源代码编译。为了长期安全,安装 sudo apt install unattended-upgrades -y 并使用 sudo dpkg-reconfigure --priority=low unattended-upgrades 配置它,以便安全补丁每周自动安装,无需手动干预。最后,使用 timedatectl 验证时区,因为新 Droplets 默认为 UTC。如果需要,将其设置为 sudo timedatectl set-timezone Asia/Bangkok 以匹配您的实际位置,确保日志和将来的 cron 作业使用正确的时间。

常见错误和故障排除

用户经常问到的一点是:Debian 初学者最常犯的错误是忘记 sudo 没有预安装,然后在他们尝试在第一行熟悉的 Ubuntu 命令时对"command not found"感到困惑。解决方案是始终在初始设置期间首先以 root 身份登录并手动安装 sudo。第二个更严重的错误是在允许 SSH 端口之前运行 ufw enable,这会立即将您锁定在外面并阻止 SSH 登录。如果发生这种情况,请通过 DigitalOcean Console(可从控制面板访问,无需 SSH)访问 Droplet,并运行 ufw allow OpenSSH 或临时 ufw disable 以恢复访问。另一个常见错误是由于 RHEL 系统的习惯而输入 systemctl restart sshd,然后看到"Unit sshd.service not found"并错误地相信配置更改没有生效 — 而实际上,Debian 上的服务名只是 ssh。一个危险的陷阱是在测试新用户的 SSH 密钥登录之前在一次编辑中同时禁用 PasswordAuthentication 和 PermitRootLogin,这样如果密钥失败,就没有办法回到系统。防止措施是增量测试:在应用下一个更改之前打开新会话以验证每个更改。另一个常见问题是在没有 apt update 的情况下运行 apt install,导致"package not found"错误,即使包存在于存储库中 — 本地索引只是过期了。最后,一个微妙的疏忽是未注意到 Droplets 默认为 UTC 时区,导致日志和 cron 作业中的时间差异,直到稍后才注意到。这应该在初始设置时检查和更正,而不是追溯调试。

最佳实践

完成初始设置后,采取几项实践以长期保持 Debian Droplet 的安全性和可维护性。首先,仅强制使用 SSH 密钥:完全禁用密码身份验证和直接 root 登录,使用能够 sudo 的非 root 用户作为您的主要操作帐户。限制 true root 使用仅用于通过 sudo 的紧急情况。其次,在任何公开面向的 Droplet 上并行操作 ufw 和 DigitalOcean Cloud Firewall,因为它们在不同的层(操作系统和网络)工作,并为您提供纵深防御。第三,从一开始启用 DigitalOcean 的免费 Monitoring,并配置 Alert 策略以应对异常 CPU/RAM/Disk 尖峰,这样您会在用户投诉之前听到有关问题的消息。第四,一旦基本配置完成并验证 SSH/sudo 工作正常,创建 Droplet Snapshot 以用作基础镜像,允许快速恢复或克隆到新 Droplets,无需每次都重新运行设置。第五,确实启用 unattended-upgrades 以进行自动安全补丁,但对于 Debian 本身的主要版本升级(例如,从版本 12 跳到将来的下一个版本),始终先在暂存 Droplet 上测试,而不是让 unattended-upgrades 自动执行主要升级,因为运行的服务有真实的风险。第六,从创建时标记 Droplets(例如 env:production 或 role:web)以在 Droplet 数量增长时简化 Cloud Firewall 和计费管理。最后,将初始设置记录为可重用的脚本或 cloud-init 配置,确保每个新 Droplet 都能达到相同的安全基准,无需每次手动步骤。

领取 $200 免费额度 →

常见问题(FAQ)

Debian 在初始 Droplet 设置中与 Ubuntu 有何不同?
关键区别是 Debian 没有预安装 sudo 或 ufw — 首次以 root 身份登录后必须手动安装两者 — 而 Ubuntu 包括两者。此外,Debian 没有 snapd,强调版本稳定性而不是包新鲜度。
Debian 初学者应该选择什么 Droplet 大小?
对于测试或小型网站,Basic $6/月计划(1 GiB RAM、1 vCPU、25 GB SSD)是足够的。对于真实流量或多个服务,建议 $12-24/月(2-4 GiB RAM、1-2 vCPU)。(定价截至 2026 年 7 月 — 请在提供者的网站上验证当前费率。)
为什么在 Debian 上创建新用户后找不到 sudo?
Debian 不预安装 sudo。您必须以 root 身份首先登录并运行 apt install sudo -y,然后使用 usermod -aG sudo username 将用户添加到 sudo 组,然后 sudo 才可用。
每次 apt full-upgrade 后都需要重启吗?
否,仅当内核或 libc 等核心库被更新时才需要。检查 /var/run/reboot-required 或使用 needrestart 工具以查看是否需要重启。
我可以同时使用 ufw 和 DigitalOcean Cloud Firewall,还是必须选择其中之一?
同时使用两者,这是强烈推荐的。它们在不同的级别工作:ufw 在操作系统级别过滤,Cloud Firewall 在网络级别。如果 ufw 配置错误,Cloud Firewall 仍然会保护您。
Debian 对于生产环境是否比 Ubuntu 更好?
这取决于您的需求,而不是通用的"更好"。Debian 适合需要最大版本稳定性和长生命周期而无需破坏性更改的工作负载。如果您的团队需要较新的包或依赖 snap 生态系统和 Ubuntu Pro 服务,则 Ubuntu 更好。