第一次拿到阿里云服务器的时候,我估计大部分人的状态都是又兴奋又懵:控制台里点了一通,实例状态从“启动中”变成“运行中”,然后呢?然后就没有然后了。我从第一次配置阿里云服务器到现在,中间踩过的坑真的不少,最典型的场景就是照着网上的教程配到一半,发现 SSH 连不上、JDK 装好了却找不到 java 命令、MySQL 远程连不上、Redis 装好第二天就被扫描入侵。后来我把这套流程完整走顺之后才发现,配置服务器其实是一条很清晰的线,只要按顺序来,每一步都不难,难的是没人帮你把这条线串起来。
这篇文章我就按自己现在每次新购服务器都会走的流程,从头到尾写一遍。从你下单完开始,到 SSH 登录、系统初始化、安装 JDK/Maven/MySQL/Redis/Nginx,再到绑定域名、配置 HTTPS 免费证书、用 VSCode 远程开发,最后是日常维护和服务器安全加固。内容面向第一次买服务器的同学,也适合那些已经有一台机器但一直没时间整理的老哥,当作一份可以直接抄作业的清单。
1. 配置阿里云服务器,到底在配置什么
1.1 一台云服务器由哪些部分组成
很多人对“云服务器”的理解就是“一台远程电脑”,这个类比方向没错,但细节上容易忽视几个关键组成部分。我建议你先在心里把阿里云 ECS 的架构拆成这么几块:
- 计算实例(ECS):核心是 CPU、内存和系统盘。2 核 4G、4 核 8G 这些参数决定这台机器的“体力”。系统盘默认一般是 40G ESSD 云盘,这个是你装系统的地盘。
- 镜像(操作系统):阿里云支持很多系统镜像,比如 Alibaba Cloud Linux、Ubuntu、Debian、CentOS Stream、Windows Server。后续所有命令都跟你选的操作系统强相关,后面我会按 Ubuntu 路线来写,这也是目前个人开发者最常用的选择。
- 公网 IP:一台云服务器必须有一个公网 IP 你才能从家里连上去。阿里云的 IP 分配分“固定公网 IP”和“弹性公网 IP(EIP)”两种,新购的 ECS 默认自带固定公网 IP,够用了。
- 安全组:这是很多人最大的知识盲区。安全组相当于阿里云机房边缘的一个云防火墙,是独立于你系统内部防火墙存在的。你的服务器系统里所有的服务都正常启动了,但安全组不放行端口,外部照样访问不了。
- 登录凭证:要么是密码,要么是密钥对。登录实例的 22 端口默认是开放的,但你得先有凭证才能进去。
搞清楚这几个基础概念之后,后面所有配置环节都会很好理解。比如你装了 Nginx 发现 80 端口打不开,90% 的问题出在安全组,而不是 Nginx 本身。
1.2 选型前先想清楚:你的服务器要做什么
我第一次买服务器的时候纯粹是脑子一热,选了个最便宜的 1 核 2G 就下单了,结果装上 MySQL 之后内存直接见底,系统卡得连 SSH 操作都有延迟。所以这里我劝你先花两分钟想清楚这几点。
首先是地域。一个简单的经验:你的访问者主要在国内,就选离他们近的节点,比如华东、华北、华南。我之前贪便宜选过境外节点,延迟虽然只有几十毫秒,但某些时间段网络波动很明显。如果只是自己学习和测试,选哪都行,但后面要部署正式面向国内用户的业务,节点位置影响会比较直接。
其次是实例规格,我按使用场景给一个参照表:
| 使用场景 | 建议配置 | 说明 |
|---|---|---|
| 个人博客 / 学习 Linux | 2 核 2G | 跑 Nginx + 静态页面或轻量博客够用 |
| Java/Node.js 后端开发 | 2 核 4G | 跑 Spring Boot + MySQL 不会太紧张 |
| 小团队内部工具 / 测试环境 | 4 核 8G | 同时跑 3~4 个服务更从容 |
| 数据分析 / 编译打包 | 4 核 8G 起 | 大项目 Maven 打包、前端构建很吃 CPU 和内存 |
再就是带宽。这里我强烈建议你多看一眼计费方式。个人场景如果主要做开发调试,固定带宽 3M 到 5M 完全够。如果是要做文件下载、音视频分发这类大流量业务,固定带宽会很贵,可以改“按使用流量”计费,再配合 OSS 这类对象存储来扛流量。
1.3 我建议的第一次购买配置
这几年我前后买过好几台阿里云服务器,目前认为最不踩坑的“新手默认配置”是这样的:地域选离你最近的国内节点;实例规格 2 核 4G;系统镜像选 Ubuntu 22.04 LTS;系统盘 40G ESSD,如果预算允许就加到 60G;带宽按固定带宽 5M 计费。这套配置不管是跑一个个人网站、部署后端 API,还是当作开发测试机都够用了,后续也能按需升级。
这个配置不是绝对标准,但能避免很多新手最容易遇到的“内存不足导致服务莫名其妙挂掉”的问题。如果你的预算确实有限,2 核 2G 也能用,但建议你从一开始就规划好 swap 空间,这个我后面会专门提到。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 第一次登录:拿到服务器先做这几件事
2.1 重置密码还是创建密钥对
新购实例的时候,阿里云会让你设置 root 密码,或者选择“创建密钥对”。我的建议很明确:个人使用,优先创建密钥对,同时保留密码作为最后的兜底方案。密钥对的原理是本地保存一个私钥文件,服务器端只存公钥,登录时通过密钥自动认证,暴力破解密码这种方式对密钥对完全失效。
在阿里云控制台的“密钥对”页面创建之后,系统会让你下载一个 .pem 私钥文件。这个文件务必存好,丢了就再也进不去这台机器了。如果你已经买完实例但当时没设置密钥对,也可以在实例详情页里点“重置实例密码”,输入新密码之后重启实例生效。需要注意,重置密码后必须重启实例才会生效,这个细节很多人不知道,密码改了老半天连不上,一脸懵。
2.2 用 SSH 登录的完整流程
现在进入实际操作。先打开你本地的终端(Windows 10/11 可以直接用 PowerShell 或 CMD 自带的 OpenSSH),执行:
bash复制ssh root@你的公网IP
第一次连接会提示你确认主机指纹,输入 yes 回车,然后输入密码即可。如果你用的是密钥文件,命令是这个样子:
bash复制chmod 600 /path/to/your.pem
ssh -i /path/to/your.pem root@你的公网IP
这里 chmod 600 是必须的,因为 OpenSSH 对私钥文件权限检查很严格,权限放太宽它会直接拒绝使用这个密钥。
如果你是在外面临时想连一下服务器,又不想打开本地终端,阿里云控制台自带的“远程连接 Workbench”可以直接在浏览器里打开一个网页版终端,输入密码就能进系统,作为应急通道非常方便。我现在的工作习惯是:本机能用 SSH 就用 SSH,实在不行才开 Workbench。
2.3 安全组规则:为什么你连不上
绝大多数新手遇到第一个“卡点”就是对应的问题:SSH 端口明明没改,服务端也正常,但就是连不上?这个时候你基本不用去查别的地方,先去看安全组。
新购的 ECS 默认安全组一般只放行 22 端口,后面你装了 Nginx 想访问 80 端口、装了 MySQL 想远程连 3306,都会被安全组挡住。解决办法是在控制台进入“实例详情 - 安全组 - 安全组列表 - 入方向规则”,手动添加放行规则。
我自己配置安全组的习惯是:能最小化就最小化。只放行需要用到的端口,其余全部默认拒绝。比如 22(SSH)、80(HTTP)、443(HTTPS)、3306(MySQL,只对指定 IP 放行)等。这里特别提醒一句,如果你改了 SSh 端口,比如改成 22222,一定要记得同步在安全组里放行 22222,否则改完端口直接把自己锁在外面,只能通过 Workbench 进去改回来。
3. 登录之后的系统初始化
3.1 更新系统与安装基础工具
登录成功的瞬间才算是真正“开始配置服务器”。我习惯上第一件事永远是更新系统并安装基础工具。Ubuntu 22.04 下执行:
bash复制sudo apt update && sudo apt upgrade -y
这个步骤会把内核、系统库、安全补丁都更新到最新,避免在旧软件包上做后续操作。之后安装一组基础工具:
bash复制sudo apt install -y curl wget git vim htop net-tools unzip tree
这里面每个工具都有它的用途:curl 和 wget 用来下载文件,vim 是终端编辑器,htop 是交互式资源监控工具,net-tools 提供 ifconfig、netstat 等命令,unzip 用于解压 zip 包。如果你选的是 Alibaba Cloud Linux 或 CentOS,对应的包管理器是 dnf/yum,命令会变成 sudo dnf install -y ...,逻辑是一致的,别把 apt 和 yum 混着用就行。
3.2 修改主机名、时区与 SWAP
接下来修改系统主机名。默认的主机名通常是一串随机字符串,看起来非常不舒服,手动改成业务相关的名字,后面多台服务器的时候才能分得清。
bash复制sudo hostnamectl set-hostname my-server
然后检查时区,服务器默认可能是 UTC,时间和国内差 8 小时,不想看到日志时间对不上的话就把它切到上海:
bash复制sudo timedatectl set-timezone Asia/Shanghai
然后是最容易被忽略的 swap。2G 内存的机器跑 MySQL 很容易触顶,swap 可以当“慢速内存”用,避免进程直接被 OOM Killer 杀掉。我用下面的方式临时创建并启用一个 2G 的 swap 文件:
bash复制sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
要让重启后仍然生效,还需要把这一行写进 /etc/fstab 文件:
bash复制sudo bash -c "echo '/swapfile none swap sw 0 0' >> /etc/fstab"
这里我提醒一句:swap 不是越大越好,太大会一直触发磁盘读写,影响性能。通常 2G~4G 足够小内存机器“续命”了。
3.3 创建普通用户并禁用 root 远程登录
很多教程让你拿到服务器就一直用 root 操作,我能理解这种偷懒有多舒服,但生产环境真的不建议这么干。root 权限太大,一条误操作就能把系统弄瘫,比如 rm -rf / 这种事,用普通用户身份是执行不了的,能帮你挡住不少手滑。
创建一个普通用户,比如叫 work,并加入 sudo 组:
bash复制sudo adduser work
sudo usermod -aG sudo work
后续操作都用这个用户登录,需要管理员权限时通过 sudo 临时提升。这一步做完,先不要急着禁用 root,等密钥登录配置好了之后再禁用,否则容易把自己锁在门外。
3.4 配置 SSH 密钥登录并关闭密码登录
密码登录最大的风险是它被暴力破解。只要你把 SSH 端口暴露在公网,扫描器就会全天候扫描,弱密码基本撑不过一晚上。解决办法就是密钥登录。
先在本地机器生成一对密钥:
bash复制ssh-keygen -t ed25519 -C "your_email@example.com"
然后把公钥推送到服务器:
bash复制ssh-copy-id work@你的公网IP
或者手动方式,把本地 ~/.ssh/id_ed25519.pub 的内容追加到服务器 ~/.ssh/authorized_keys 文件里。接下来测试密钥登录是否成功,确认能通过密钥免密登录之后,再修改 SSH 配置:
bash复制sudo vim /etc/ssh/sshd_config
关键修改工项:
conf复制PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
重启 sshd 服务前,请务必先另开一个终端测试密钥登录。确认没问题之后再执行:
bash复制sudo systemctl restart sshd
这是我在运维过程中学的最深的一课:改 SSH 配置一定要保留一条“逃生通道”,Workbench 网页终端是最可靠的底线,否则一旦配置写错,本地终端全部断开,那就只能靠控制台“碰运气”了。
4. 搭建开发运行环境:JDK、Maven、Node.js
4.1 JDK 安装与 JAVA_HOME 配置
如果你要跑 Java 服务,第一步当然是装 JDK。Ubuntu 下最简单的方式是直接用 apt 安装 OpenJDK:
bash复制sudo apt install -y openjdk-17-jdk-headless
项目如果是基于 Java 8 的,把包名换成 openjdk-8-jdk-headless 即可,注意版本要对齐,否则编译出来的 class 文件在目标环境跑不起来会是很麻烦的兼容问题。
装完之后最重要的一件事是配置 JAVA_HOME。很多工具(比如 Maven、Gradle、Tomcat)都要通过这个环境变量找到 JDK 路径。先找一下安装路径:
bash复制sudo update-alternatives --config java
一般路径是 /usr/lib/jvm/java-17-openjdk-amd64,然后在你的 shell 配置里加入环境变量:
bash复制echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
验证是否配置成功:
bash复制java -version
echo $JAVA_HOME
如果 java -version 能正常输出版本,但 echo $JAVA_HOME 是空的,那基本就是环境变量那只写了 PATH 没写 JAVA_HOME。这是我见过最多的情况,特别坑。
4.2 Maven 安装与阿里云仓库镜像配置
Maven 之于 Java 项目,相当于“包管理器 + 构建工具”二合一。Ubuntu 也可以 apt install maven,但我更推荐用官方二进制包手动安装,因为 apt 源里的 Maven 版本通常比较旧,新项目有时会不兼容。
bash复制cd /opt
sudo wget https://archive.apache.org/dist/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz
sudo tar -zxvf apache-maven-3.9.6-bin.tar.gz
sudo mv apache-maven-3.9.6 maven
然后配置环境变量:
bash复制echo 'export MAVEN_HOME=/opt/maven' >> ~/.bashrc
echo 'export PATH=$MAVEN_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
关键一步来了:配置阿里云 Maven 仓库镜像。默认的 Maven Central 在国外,国内下载依赖慢到让人崩溃。阿里云维护了一个国内同步仓库,速度提升非常明显。修改 Maven 的全局配置文件 /opt/maven/conf/settings.xml,找到 <mirrors> 节点,添加:
xml复制<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
建议再顺手设置本地仓库路径,避免默认配置在系统盘,养成好习惯:
xml复制<localRepository>/opt/maven/repository</localRepository>
配置完成后,mvn clean compile 下载依赖的速度会有天壤之别。我自己第一次配上之后的感觉是:早知道早点配,以前编译一个空项目都能等好几分钟。
4.3 Node.js 安装与 npm 镜像切换
如果你要跑前端项目、小程序后端或者用 Node.js 写 API,那么再装一个 Node.js 环境。这里我比较推荐用 nvm(Node Version Manager)来管理版本,因为不同项目要求的 Node 版本经常不一样,nvm 可以随时切换。
bash复制curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 20
nvm use 20
国内访问 npm 官方源速度也不理想,建议切换为 npmmirror(淘宝镜像)源:
bash复制npm config set registry https://registry.npmmirror.com
验证一下:
bash复制npm config get registry
npm install -g package-name
装完之后,Node 和 npm 的基本环境就齐了。如果你还用到 pnpm/yarn,也可以用 npm install -g pnpm 的方式装,注意镜像配置要对同一个 registry 生效即可。
5. 数据库与缓存:MySQL 和 Redis 的安装与安全配置
5.1 MySQL 8 的安装与远程连接配置
数据库是服务器上最容易让人栽跟头的环节。Ubuntu 22.04 直接用 apt 安装 MySQL 8 很方便:
bash复制sudo apt install -y mysql-server
sudo systemctl enable --now mysql
安装完成之后先检查状态:
bash复制sudo systemctl status mysql
接下来是重点:Ubuntu 上 MySQL 8 默认 root 用户使用的是 auth_socket 插件,也就是说你要通过系统 root 身份才能进入 MySQL 客户端,用密码是登不进去的。这个设计很安全,但对远程连接和日常开发来说是障碍。
我更推荐创建一个业务专用用户,而不是费劲去改 root 的插件。用系统的 sudo 身份进入 MySQL:
bash复制sudo mysql
然后创建数据库和用户:
sql复制CREATE DATABASE app_db DEFAULT CHARACTER SET utf8mb4;
CREATE USER 'app'@'%' IDENTIFIED BY '你的强密码';
GRANT ALL PRIVILEGES ON app_db.* TO 'app'@'%';
FLUSH PRIVILEGES;
这里的 'app'@'%' 表示允许从任意主机连接。如果只想允许你自己的固定 IP,可以把 % 换成具体 IP,比如 'app'@'123.45.67.89',安全性更高。
如果你确实需要 MySQL 监听在公网接口,还需要修改配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf,找到 bind-address 这一行。默认是 127.0.0.1,只允许本地连接;要允许远程访问,可以改成 0.0.0.0 或者注释掉这一行,然后重启 MySQL。
最后不要忘记去阿里云安全组放行 3306 端口(如果远程访问确实需要)。这里我想强调一点:绝大多数“远程连不上 MySQL”的问题,现有顺序排查基本就是这三点:用户 host 权限制是否允许、bind-address 是否监听对外地址、安全组是否放行。每次排查顺序不要乱,省时间省到飞起。
5.2 Redis 的安装与防入侵安全设置
Redis 在大部分项目里是以缓存的角色出现的,但也有很多人会直接拿它做消息队列。Redis 本身启动简单,难在安全配置。默认安装完 Redis,它没有密码保护,监听地址如果又是 0.0.0.0,那基本就是在公网上裸奔。这类服务器被蠕虫挖矿程序扫描、写入、植入病毒的例子屡见不鲜,我认识的人里就有中招的。
安装:
bash复制sudo apt install -y redis-server
推荐修改 /etc/redis/redis.conf 中的这几个配置:
conf复制bind 127.0.0.1
protected-mode yes
requirepass 你的强密码
如果只是想在本机跑应用访问 Redis,bind 保持 127.0.0.1 就够了,不要改成 0.0.0.0。如果业务上有必须从其他服务器访问的需求,我更推荐的方法是通过阿里云安全组限制来源 IP,而不是把 Redis 暴露到整个公网。
修改配置之后重启服务:
bash复制sudo systemctl restart redis-server
redis-cli -a 你的强密码 ping
能返回 PONG,说明服务正常。为防密码泄露到 shell 历史记录中,-a 参数建议只在测试时用,正式脚本里使用 REDISCLI_AUTH 环境变量。
6. Nginx、域名解析与 HTTPS
6.1 域名解析到服务器
服务器搭好了,环境装好了,下一步大多数人会把自己的网站绑定到域名上。在阿里云控制台的“域名解析 DNS”页面,添加一条 A 记录,主机记录根据需要填 www、@ 或者 api,记录值填你的服务器公网 IP。
这里有个很容易坑到新手的点:解析生效需要时间。理论上很快生效,但某些地区可能延迟几分钟到几十分钟。添加完记录之后,可以用下面的命令验证:
bash复制ping yourdomain.com
nslookup yourdomain.com
如果解析出来的 IP 是你的服务器 IP,说明域名解析已经生效。
6.2 申请免费 SSL 证书并配置 HTTPS
一旦域名能正常访问,接下来就应该上 HTTPS。这个环节我强烈建议直接用阿里云的免费 SSL 证书,操作路径是:控制台搜索“数字证书管理服务”,进入“SSL 证书”,选择“免费证书”,提交申请后按照提示做 DNS 验证,一般几分钟内就能签发。
证书签发之后,下载 Nginx 格式的证书压缩包。解压之后会得到两个文件,一般是 yourdomain.pem 和 yourdomain.key。把这两个文件上传到服务器的 /etc/nginx/cert/ 目录,并设置权限:
bash复制sudo mkdir -p /etc/nginx/cert
sudo chmod 600 /etc/nginx/cert/*
然后在 Nginx 站点配置里加一个 443 端口的 server 块。以 /etc/nginx/sites-available/default 为例:
nginx复制server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /etc/nginx/cert/yourdomain.pem;
ssl_certificate_key /etc/nginx/cert/yourdomain.key;
ssl_protocols TLSv1.2 TLSv1.3;
root /var/www/html;
index index.html index.htm;
}
同时再加一个 80 端口的 server 块,把 HTTP 请求永久重定向到 HTTPS:
nginx复制server {
listen 80;
server_name yourdomain.com;
return 301 https://$host$request_uri;
}
保存配置后,先验证再重载:
bash复制sudo nginx -t
sudo systemctl reload nginx
如果 nginx -t 报错,请先检查证书路径是否正确、文件权限是否足够。之前见过太多人卡在证书路径少打一个字母上,这里要仔细一点。
6.3 免费证书的续期与群晖场景避坑
阿里云的免费 SSL 证书默认有效期是 3 个月,到期前 30 天内可以免费重新申请或续期。这个操作不复杂,但很考耐心:证书快到期的时候去控制台申请新证书,下载后替换掉服务器上的 pem/key 文件,再 reload 一下 Nginx。我自己的习惯是直接在手机日历上设提醒,一次续期三到五分钟可以搞定,千万不要等过期了再处理。
顺便说一个被很多玩家问烂的问题:群晖 NAS 换了阿里云 SSL 证书之后,在控制台上传证书时提示“抱歉,您所指定的页面不存在”。这个问题我当初也遇到过,最后定位到原因很简单:群晖要求的是“服务器证书 + 私钥 + 证书链”三段内容,而你填进去的证书链缺失,或者私钥和证书不匹配。
解决办法是先用命令验证一下 pem 和 key 是否匹配:
bash复制openssl x509 -noout -modulus -in yourdomain.pem | openssl md5
openssl rsa -noout -modulus -in yourdomain.key | openssl md5
两个命令输出的哈希值一致,说明私钥和证书是配对的。然后群晖“控制面板 - 安全性 - 证书”里,新增/导入证书时,把“服务器证书”、“私钥”、“证书链”三个框对应的内容,按顺序完整填入,尤其是证书链,很多人没填导致报错。
7. 远程开发与日常维护
7.1 VSCode Remote-SSH 远程开发
我后来把大量日常开发工作直接搬到了云服务器上,靠的就是 VSCode 的 Remote-SSH 插件。以前在本地写代码,上传到服务器部署,来回调试非常碎片化。现在直接在本地 VSCode 里打开远程项目文件夹,编辑、调试、终端全部走服务器,体验和本地开发几乎没有差别。
操作步骤很简单:本地装好 VSCode,安装 Remote-SSH 插件,然后在 ~/.ssh/config 文件里配置:
conf复制Host my-server
HostName 你的公网IP
User work
Port 22
IdentityFile ~/.ssh/id_ed25519
接着在 VSCode 命令面板执行 Remote-SSH: Connect to Host,选择 my-server,就可以打开远程目录了。每次登录不需要重复输密码,因为前面已经配置好了密钥免密登录,这个过程会非常顺滑。
这里我分享一个小习惯:远程服务器上的项目和本地项目保持同一套代码仓库,代码一律提交到 Git 远端,需要部署时直接在远程终端拉取并运行,这样不会出现“本地能跑,服务器跑不起来”的经典问题。
7.2 日常监控、日志排查与备份
服务器用久了,日常维护是避免不了的。我最常用的几条命令基本上固定在 muscle memory 里了:
bash复制df -h # 查看磁盘剩余空间
free -h # 查看内存使用
htop # 实时查看 CPU/内存/进程
ss -lntp # 查看端口监听状态
journalctl -u nginx -f # 实时查看服务日志
日志排查是定位问题最快的路径。比如网站异常,先看 Nginx 的错误日志 /var/log/nginx/error.log;Java 服务崩溃,先看应用自己的日志文件。有几次磁盘被日志文件占满,服务突然全挂,吓得我以为是程序 bug,最后发现是日志没有做轮转清理。
关于备份,我采用的习惯是:数据库每天凌晨用 mysqldump 全量备份,代码仓库已经托管在 Git 远端,重要的配置文件打包后同步到对象存储。备份逻辑不复杂,但一定要有。自己的博客、个人项目可能觉得“丢了就丢了”,但等你真的把很多配置和数据堆在上面之后,就知道备份有多值钱。
7.3 服务器安全加固清单
最后,把服务器上线前应该做的安全加固总结成一份清单,配合上面各章节的步骤,直接照着过一遍:
| 检查项 | 操作/要求 |
|---|---|
| 系统更新 | 新机器第一时间 apt update && apt upgrade |
| SSH 登录 | 禁用密码登录,启用密钥对登录 |
| 普通用户 | 日常使用非 root 用户,sudo 提权 |
| 安全组 | 最小化放行:22、80、443 等必要端口 |
| 防火墙 | 系统内按需配置 ufw,与安全组保持一致 |
| MySQL | 不开放 root 远程,使用独立账号并限制来源 IP |
| Redis | 设 requirepass,默认 bind 127.0.0.1 |
| HTTPS | 域名必须上证书,访问统一走 443 |
| 数据备份 | 数据库每天备份,重要目录额外兜底 |
我在实际使用中最大的感受是:安全加固不是一次性任务,而是养成习惯。日常登录看日志、定期检查有没有陌生进程和外联 IP、及时更新安全补丁,这些动作两分钟就做完,但能挡掉绝大多数“野路子”攻击。曾经有一台测试服务器 Redis 没设密码,被扫描器直接攻破写了个挖矿程序,CPU 被打满才发现,从那以后我对任何对外开放的服务都保持敬畏,端口能不开就不开,密码能强就强。
这台服务器从裸机到正式提供服务,需要打通的环节确实不少,但只要按顺序走,每部分的耗时其实都很短。这篇内容就是我目前配置阿里云服务器的完整操作流程,也顺便记录了一些我犯过的错和总结的经验。配置过程中如果遇到一时解决不了的问题,建议先别急着重装系统,拿着提示信息一步步倒推,很多时候问题出在最不起眼的那一步上。
