外观
云服务器初始化配置说明:系统更新、时区、用户与防火墙设置
约 1720 字
服务器初始化配置
本说明用于一台全新云服务器对外提供服务前的初始化:完成系统更新、时区与主机名、登录用户与防火墙四类设置。三步全部完成后,机器具备可追溯的软件版本、统一的时间基准、可审计的登录账号,以及默认拒绝入站流量的网络边界。
一、适用范围
- 适用:新购或刚重装的 Debian 12、Ubuntu 22.04 LTS 云服务器;需要作为 Nginx、数据库、备份等后续文档的执行载体;持有 root 密码或密钥、可进入控制台 VNC 的首次登录会话;机器尚未承载业务,允许中途重启与短暂断连。
- 不适用:已承载线上业务且不能中断的存量服务器,此类机器应改为灰度变更并逐项验证;Windows Server 与非 systemd 发行版,其服务管理与包管理命令完全不同;由云厂商托管、不允许改动本机防火墙的实例类型。
判断是否适用只需看两个条件:这台机器现在有没有真实用户流量,以及是否允许在变更中重启。两个条件都为“是”时,按本说明一次性执行完三步即可交付使用。
二、准备工作
| 项目 | 要求 | 检查方法 |
|---|---|---|
| 登录凭据 | root 密码或初始密钥已保存 | ssh root@203.0.113.10 可进入,whoami 返回 root |
| 系统版本 | Debian 12 或 Ubuntu 22.04 LTS | cat /etc/os-release 中 VERSION_ID 为 12 或 22.04 |
| 网络连通 | 云安全组已放通 22 端口 | ss -lntp 输出中存在 sshd 监听 |
| 时间同步 | 可出站访问 NTP 服务 | timedatectl 中 NTP service 为 active |
| 配置备份 | 已保存 sshd 与防火墙初始状态 | cp /etc/ssh/sshd_config /root/sshd_config.bak |
| 变更窗口 | 业务未上线,允许重启与断连 | 与负责人确认窗口时段 |
注意事项:
- 全程保留一个已登录的 SSH 会话不关闭,另开新会话验证改动。新会话失败时用旧会话回滚,这条习惯可以避免绝大多数锁死事故。
- 云厂商安全组与本机防火墙是两层独立策略,必须同时满足才能连通。安全组须先放通 22,否则
ufw enable后可能立即失去连接,只能进控制台救援。 - 准备工作阶段不建议做任何写操作,先把版本、IP、主机名规划确认清楚,再进入操作步骤,中途反复变更会拖长窗口。
三、操作步骤
本节拆成三个子步骤,建议按顺序执行;每一步完成后先确认结果,再进入下一步。
3.1 系统更新与基础软件安装
先补齐安全更新并安装后续要用的基础工具,保证 apt 源可用、系统无明显待修漏洞。这一步不改变登录方式,即使出错也不影响当前会话,因此放在最前面。详见 3.1 系统更新与基础软件安装。
3.2 时区、主机名与 SSH 基础设置
统一时间基准与主机标识,并把 SSH 调整到仅允许密钥登录的前置状态。时间不一致会让日志、监控与证书校验出现难以解释的偏差,主机名则决定日志与监控中的设备标识,二者都应在部署业务前定稿。详见 3.2 时区、主机名与 SSH 基础设置。
3.3 用户、权限与防火墙配置
创建日常运维账号并收敛入站端口,最后关闭 root 远程登录与密码认证。防火墙默认策略只有在账号验证可用之后才启用,顺序颠倒会同时失去账号与网络两条退路。详见 3.3 用户、权限与防火墙配置。
三步之间存在硬依赖:3.1 决定软件版本,3.2 决定标识与认证方式,3.3 决定最终权限边界。跳过任意一步直接进入下一步,都会在后续文档(Nginx、证书、备份)中留下隐患。
四、验证方法
- 执行
apt list --upgradable,预期输出为空,或仅剩需重启生效的内核相关包。若仍有 security 来源的待升级包,说明 3.1 未执行完整。 - 执行
timedatectl,预期Time zone: Asia/Shanghai (CST, +0800)、System clock synchronized: yes、NTP service: active。三项任一不符都不能进入后续文档。 - 执行
hostnamectl,预期 Static hostname 为规划名称;新开终端ssh deploy@203.0.113.10可登录,sudo -v通过且提示输入 deploy 自己的密码。 - 执行
ufw status verbose,预期Default: deny (incoming)、allow (outgoing),规则列表仅含 22、80、443,且状态为 active。
验证要在新开的会话中完成,不要复用执行变更的那个会话。只有新会话可登录,才能证明 sshd 与防火墙的组合策略没有把自己关在门外。
五、常见问题
| 现象 | 可能原因 | 处理方式 |
|---|---|---|
apt update 返回 404 | 镜像源代号与发行版不匹配 | 核对 /etc/apt/sources.list 中 bookworm 或 jammy 代号,替换为同版本镜像后重试 |
| 修改 sshd 后新会话连不上 | Port 或 PermitRootLogin 与实际不符,安全组未放通 | 用 VNC 登录执行 sshd -t,语法错误按备份还原 |
timedatectl set-timezone 失败 | 未安装 tzdata,或容器内缺少权限 | 安装 tzdata 后重试;容器环境改为挂载宿主 /etc/localtime |
ufw enable 后连接中断 | 启用前未放通 22 端口 | VNC 内执行 ufw allow 22/tcp 后 ufw reload |
| 主机名重启后还原 | 仅执行 hostname 命令,未写入 /etc/hostname | 改用 hostnamectl set-hostname 并检查 cloud-init 配置 |
六、回滚与注意事项
- 回滚:sshd 配置用
/root/sshd_config.bak覆盖后执行sshd -t与systemctl reload ssh;防火墙执行ufw disable恢复为未启用状态;账号执行userdel -r deploy,删除前先确认无其运行进程与定时任务。 - 回滚的前提是备份存在且时间点明确。每次改动前先复制一份带日期的备份,例如
sshd_config.bak.20260112,不要反复覆盖同一个文件。 - 注意:
ufw reset会清空全部规则,仅在全量回滚时使用,执行前先ufw status numbered记录现状,否则重建规则只能靠记忆。 - 注意:主机名变更会影响监控对象、日志标识与证书申请记录,改名后同步更新上述三处,避免出现一台机器在两个系统里叫不同名字。
- 注意:初始化完成后立即把本文档中的实际值(IP、主机名、端口、账号)记录到运维台账,后续所有文档都以这份记录为准。