ECS Linux 实例首次开机初始化实战

举报
赛博大妈 发表于 2026/10/29 21:20:22 2026/10/29
【摘要】 新购 ECS 只有 root、默认时区、默认主机名和默认软件源,直接上生产会留隐患。本文按首次开机顺序讲主机名与时区、系统更新与软件源、运维账号与 SSH、安全基线、磁盘与 Swap,最后给一份可复用的收尾清单。

新购一台 ECS Linux 实例,第一次开机先别急着装业务。默认配置往往只有 root 账号、默认主机名、默认时区和默认软件源,直接上生产,等于把一堆隐患留给了以后。本文按首次开机的顺序,把初始化做成一套可复用的流程。

一、为什么要初始化

新购 ECS 的默认状态适合“能开机”,不适合“能上生产”:只有一个 root 账号,任何人拿到密码就拥有全部权限;时区、主机名、软件源都是默认配置,日志时间、监控告警、排错定位都可能对不上;没有普通运维账号、没有密钥登录、没有防火墙对照,出了问题很难追溯是谁、在哪台机器上、改了什么。

初始化的目标不是把系统改得越复杂越好,而是做到三点:身份可区分、时间可对齐、改动可回滚。先做这三点,再装业务,成本最低。

二、主机名与时区

主机名要一眼能区分环境和用途,例如 prod-web-01、test-db-01,不要用默认的随机主机名。改主机名后要重新登录会话确认生效,并检查应用配置、证书、监控标签里有没有硬编码旧主机名。

hostnamectl set-hostname prod-web-01
hostnamectl

时区建议设为 Asia/Shanghai,并用 timedatectl 一次确认:时区、本地时间、系统时间、NTP 是否同步,四项都要对。时间不对,日志时间戳、定时任务、证书有效期、数据库主从延迟都会跟着错。

timedatectl set-timezone Asia/Shanghai
timedatectl

对时优先用系统自带的 NTP 或 Chrony,不要只靠手动 date 改时间。手动改时间会让日志出现跳变,排错时很难还原顺序。改完后核对 date 的输出,并看一条新日志的时间戳是否与北京时间一致。

timedatectl set-ntp true
systemctl enable --now chronyd
chronyc tracking
date

三、系统更新与软件源

先更新系统,再装业务软件。更新前先确认当前快照或备份是否可用,更新后如需重启,要安排在业务低峰期,并先在测试实例上验证。

# Debian / Ubuntu
apt update && apt upgrade -y
# RHEL / CentOS / openEuler 系
dnf update -y

换国内镜像源要做取舍:国内源下载快、延迟低,适合日常更新;但要确认源的可信度、版本是否与官方保持一致,生产环境不要混用多个来源。换源后先 apt update 或 dnf makecache 验证,再装软件。只装必需软件,不装“以后可能用得上”的包,包越少,漏洞面越小,升级也越可控。

四、新建运维账号

不要长期用 root 直接登录。新建一个普通运维账号并加入 sudo 组,日常操作用它,需要提权时再 sudo,这样审计日志里才能区分操作人。

useradd -m -s /bin/bash ops
passwd ops
usermod -aG sudo ops  # RHEL 系用 wheel 组

SSH 密钥登录比密码登录更安全:本地生成密钥对,把公钥放到新账号的 authorized_keys,权限要收紧,私钥不要多人共用、不要传到代码仓库。

mkdir -p /home/ops/.ssh
chmod 700 /home/ops/.ssh
# 把本地 id_ed25519.pub 的内容追加到 authorized_keys
chmod 600 /home/ops/.ssh/authorized_keys
chown -R ops:ops /home/ops/.ssh

确认密钥能登录后,再禁 root 密码登录。改 /etc/ssh/sshd_config 的两个关键项:

PermitRootLogin prohibit-password
PasswordAuthentication no

关键兜底步骤:重启 sshd 之前,先开一个已经登录的会话不要退出,再新开一个会话验证密钥登录和 sudo 是否正常。两个会话都正常,才算改动成功;一旦新会话登录失败,立刻用旧会话把配置改回去,不要把自己锁在门外。

sshd -t
systemctl restart sshd

五、安全基线

安全组只放 22、80、443 这类业务必需端口,管理端口 22 尽量只放自己的出口 IP,不要对 0.0.0.0/0 全放。上一篇《ECS 安全组配置实战》讲过最小放行原则,这里要把安全组和本机防火墙对照起来看:安全组是实例外的一层,本机防火墙是实例内的一层,两边都要收紧,不能只靠其中一层。

ss -tlnp
systemctl status firewalld  # 或 ufw status

防暴力破解建议装 fail2ban:多次登录失败就临时封禁来源 IP,同时把 SSH 日志接入监控,失败次数突增要能告警。密钥也要定期轮换:人员离职、密钥疑似泄露、长期未更换,都要及时换密钥并清理旧公钥,不要只改密码了事。

六、磁盘与 Swap

数据盘不要只挂载一次就完事,要做持久化:先分区格式化,再挂载到固定目录,最后把挂载信息写进 /etc/fstab,重启后用 df -h 和 mount 核对是否还在。fstab 写错会导致开机进不去,改之前先备份原文件,写完用 mount -a 验证。

lsblk
mkfs.ext4 /dev/vdb1
mkdir -p /data
mount /dev/vdb1 /data
echo 'UUID=xxxx /data ext4 defaults 0 2' >> /etc/fstab
mount -a
df -h

小内存实例可以配适量 Swap 应急,但 Swap 不是内存的替代品:Swap 配得过大,系统在内存不足时会越跑越慢;正确做法是先看业务真实内存占用,Swap 只做缓冲,长期内存不足要升级实例规格,而不是无限加大 Swap。

fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
free -h

七、收尾清单

初始化做完,按这份清单自查一遍再交付业务:

  • 主机名、时区、NTP 是否一致,date 与日志时间戳是否对得上;
  • 系统是否已更新,软件源是否可信,只装了必需软件;
  • 是否已有普通运维账号,密钥登录是否正常,root 密码登录是否已禁;
  • 安全组与本机防火墙是否对照一致,只放了必需端口;
  • fail2ban 是否在运行,密钥轮换周期是否已定;
  • 数据盘是否已写入 fstab 并重启验证,df -h 是否正常;
  • Swap 是否适量,业务内存是否留有余量。

最后一步是把初始化脚本化:把上面这些步骤写成脚本,配合 cloud-init 或 user-data,在新实例首次启动时自动执行。这样下一台 ECS 不用再手工重复一遍,结果也更一致。脚本要先在测试实例上跑通,再用于生产。

改前先做快照或备份,这是所有初始化操作的前提:改主机名、改 SSH、改 fstab、改防火墙,任何一步改错都有回滚的办法,才敢放心动手。

下一篇:域名注册

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。