ECS Linux 实例首次开机初始化实战
新购一台 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、改防火墙,任何一步改错都有回滚的办法,才敢放心动手。
下一篇:域名注册
- 点赞
- 收藏
- 关注作者
评论(0)