新购云服务器的初始化脚本,核心其实可以概括为三个关键词:安全、精简、可复用。重点非常清晰,就是优先处理服务器开机后的几项关键任务:关闭 root 密码登录,改为 SSH 密钥认证;修改 SSH 默认端口;创建普通用户,并配置 sudo 权限和公钥;同时启用防火墙,减少默认暴露面。接着,再完成系统更新,安装 curl、wget、vim、git、jq、unzip、rsync 以及时间同步服务等基础工具。若业务场景有需要,还可以提前预装 Nginx、Node.js(nvm)、Python(pyenv)、Ja va(sdkman)运行环境。除此之外,日志要保留,关键配置要自动备份,检查清单要输出,脚本本身也建议纳入私有 Git 仓库做版本管理,这样后续维护、批量复用和安全审计都会高效很多。

新购云服务器初始化脚本的核心思路就是“安全、精简、可复用”,并不是一味堆砌功能,而是聚焦服务器首次启动后最需要完成的事项:关闭高风险默认配置、安装必要工具、搭建基础环境、保留日志,并预留回滚路径。
基础安全加固
刚开通的云服务器通常默认开启 root 密码登录、SSH 默认端口(22),有些镜像甚至可能存在弱密码风险。初始化脚本首先要做的,就是把这些常见安全入口及时封住:
- 禁用 root 密码登录,只允许密钥认证(
PermitRootLogin no+PasswordAuthentication no) - 修改 SSH 端口(例如调整为 2222),降低被自动化扫描和暴力破解命中的概率
- 新建普通用户(如
deploy),授予 sudo 权限,并将你的公钥写入其~/.ssh/authorized_keys - 启用防火墙(
ufw或firewalld),仅放行 SSH 新端口和 HTTP/HTTPS(如业务需要)
系统更新与基础工具安装
这一步不要省略——很多安全漏洞和兼容性问题,往往就隐藏在旧内核或老版本 curl、git 之中:
- 先执行系统级更新:
apt update && apt upgrade -y(Ubuntu/Debian)或yum update -y(CentOS 7)、dnf upgrade -y(CentOS 8+/Alma/Rocky) - 安装常用工具:curl、wget、vim、git、jq、unzip、rsync,都是日常开发与运维中高频使用的基础组件
- 安装时间同步服务(
systemd-timesyncd或chrony),避免因系统时间漂移造成证书异常、任务调度错误或日志时间混乱
运行环境按需预置
根据后续部署的业务类型选择性安装运行环境即可,不建议一次性预装过多无关组件:
- Web 服务:Nginx(适合静态资源托管)或 Apache(兼容部分老项目),并设置为开机自启
- Node.js 项目:使用
nvm安装稳定版本(如 v18.x),避免直接通过 apt 安装过旧版本 - Python 项目:安装 pyenv + 指定版本(如 3.11),再 pip install 常用包(requests、pipenv)
- Ja va 项目:通过 sdkman 安装 OpenJDK(如 17 LTS),并正确设置
JA VA_HOME
日志、备份与可追溯性
云服务器初始化并不是一次性操作,后续维护和审计同样重要,因此必须做到有记录、可恢复、可追溯:
- 脚本开头记录执行时间、主机名、系统版本到
/var/log/init.log - 关键配置文件(如
/etc/ssh/sshd_config)修改前自动备份为.bak - 最后输出一个检查清单(如 “✅ SSH 密钥登录已启用|⚠️ 请手动验证新端口连通性”)
- 建议将脚本本身也上传到私有 Git 仓库,每次修改保留 commit,方便多人协作、重装复用和版本回溯
初始化脚本直接使用 bash 编写通常就足够了,开头记得加上 #!/bin/bash 和 set -e(命令出错立即中断),并尽量为每条关键命令补充注释,方便后续排查与维护。像 IP、密码这类信息尽量不要硬编码,处理敏感内容时,更稳妥的方式是通过环境变量传入,或者使用交互式输入(read -s)。在正式执行之前,最好先在测试机上完整手动跑通整个流程,确认逻辑无误后再封装成自动化脚本;通常来说,这样做会比直接照搬网上那些所谓“全能云服务器初始化脚本”更安全,也更可靠。
