VPS 基础部署
拿到一台新的 VPS 后,不要急着部署服务。正确的做法是先完成系统初始化和安全加固,确保你的服务器在一个安全、可控的状态下运行。本文将一步步带你完成从系统初始化到基础运维的全流程。
前置准备
在开始之前,确保你已经具备:
- 一台已购买的 VPS(推荐 Debian / Ubuntu 系统)
- SSH 客户端(Windows 推荐 Termius 或 Windows Terminal + OpenSSH;macOS / Linux 直接使用终端)
- 由服务商提供的 root 密码或 SSH Key
第一步:首次连接
通过 SSH 连接你的服务器:
ssh root@你的服务器IP
如果是首次连接,系统会提示你确认服务器指纹(fingerprint),输入 yes 确认。
安全提醒
首次连接时,建议记录服务器的 SSH 指纹。如果后续连接提示指纹变化,可能意味着服务器被重装或遭到中间人攻击。
第二步:系统初始化
2.1 更新系统
首次登录后,立即更新系统和软件包:
# Debian / Ubuntu
apt update && apt upgrade -y
# CentOS / RHEL
yum update -y
2.2 设置主机名
为你的服务器设置一个有意义的主机名:
hostnamectl set-hostname my-vps
2.3 设置时区
将时区设置为你偏好的时区(以 UTC 或上海为例):
# 设置为 UTC
timedatectl set-timezone UTC
# 或者设置为上海时区
timedatectl set-timezone Asia/Shanghai
2.4 安装基础工具
安装一些常用的工具:
# Debian / Ubuntu
apt install -y curl wget vim git htop ufw fail2ban unzip
# CentOS / RHEL
yum install -y curl wget vim git htop firewalld fail2ban unzip
第三步:创建普通用户
重要
不要长期使用 root 用户操作服务器。创建一个普通用户并赋予 sudo 权限,日常操作使用普通用户登录。
# 创建用户(替换 yourname 为你的用户名)
adduser yourname
# 将用户添加到 sudo 组
usermod -aG sudo yourname
# 切换到新用户测试
su - yourname
sudo whoami # 应输出 root
第四步:配置 SSH Key 登录
密码登录既不方便也不安全。配置 SSH Key 登录后可以同时解决这两个问题。
4.1 在本地生成 SSH 密钥对
在你的本地电脑上执行:
# 生成 Ed25519 密钥对(推荐)
ssh-keygen -t ed25519 -C "your_email@example.com"
# 或者生成 RSA 密钥对
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
按提示操作,建议设置一个 passphrase(密码短语)来保护私钥。
4.2 将公钥上传到服务器
# 方法一:使用 ssh-copy-id(推荐)
ssh-copy-id -i ~/.ssh/id_ed25519.pub yourname@你的服务器IP
# 方法二:手动复制
cat ~/.ssh/id_ed25519.pub
# 复制输出内容,然后在服务器上:
mkdir -p ~/.ssh
echo "粘贴的公钥内容" >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
4.3 验证 Key 登录
ssh yourname@你的服务器IP
# 如果能直接登录(或只需输入 passphrase),说明配置成功
第五步:加固 SSH 配置
SSH Key 配置成功后,加固 SSH 服务配置:
sudo vim /etc/ssh/sshd_config
修改以下关键配置项:
# 禁用 root 远程登录
PermitRootLogin no
# 禁用密码登录(确保 Key 登录已经配置成功!)
PasswordAuthentication no
# 禁用空密码
PermitEmptyPasswords no
# 修改默认端口(可选,但建议修改为非 22 端口)
Port 2222
# 限制登录尝试次数
MaxAuthTries 3
# 设置登录超时
LoginGraceTime 30
# 仅允许特定用户登录
AllowUsers yourname
注意
在禁用密码登录之前,务必确认 SSH Key 登录已经可以正常工作!否则你可能被锁在服务器外面。建议保持当前 SSH 会话不要关闭,开一个新终端窗口测试 Key 登录。
重启 SSH 服务使配置生效:
sudo systemctl restart sshd
第六步:配置防火墙
使用 UFW(Debian / Ubuntu)
# 设置默认策略
sudo ufw default deny incoming
sudo ufw default allow outgoing
# 允许 SSH(如果修改了端口,替换为你的端口号)
sudo ufw allow 2222/tcp
# 允许 HTTP 和 HTTPS(如果需要)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 启用防火墙
sudo ufw enable
# 查看状态
sudo ufw status verbose
使用 firewalld(CentOS)
# 启动 firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
# 添加允许的端口
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# 移除默认的 SSH 端口(如果已修改)
sudo firewall-cmd --permanent --remove-service=ssh
# 重新加载
sudo firewall-cmd --reload
第七步:配置 Fail2Ban
Fail2Ban 可以自动封禁暴力破解 SSH 的 IP:
sudo vim /etc/fail2ban/jail.local
添加以下内容:
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400
启动 Fail2Ban:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# 查看状态
sudo fail2ban-client status sshd
基础运维
服务器上线后,日常运维同样重要:
自动安全更新
配置自动安全更新,确保系统漏洞能及时修复:
# Debian / Ubuntu
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
监控与告警
- htop:实时查看 CPU、内存、进程状态
- df -h:检查磁盘使用情况
- vnstat:监控网络流量
- UptimeRobot / Uptime Kuma:外部监控服务,检测服务是否在线
推荐部署 Uptime Kuma 作为自托管的监控方案:
# 使用 Docker 快速部署
docker run -d --restart=always -p 3001:3001 \
-v uptime-kuma:/app/data \
--name uptime-kuma \
louislam/uptime-kuma:1
定期备份
配置自动备份是防止数据丢失的最后一道防线:
- 配置文件备份:将
/etc/下的重要配置文件定期备份到本地或对象存储 - 数据备份:使用
rsync或rclone将重要数据同步到异地存储 - 快照备份:部分服务商提供 VPS 快照功能,建议在重大变更前创建快照
# 使用 rclone 同步到对象存储(示例)
rclone sync /path/to/backup remote:bucket-name/backup/
部署完成后的检查清单
- [ ] 系统已更新到最新版本
- [ ] 已创建普通用户并配置 sudo
- [ ] SSH Key 登录已配置并正常工作
- [ ] root 远程登录已禁用
- [ ] 密码登录已禁用
- [ ] SSH 端口已修改
- [ ] 防火墙已启用并配置规则
- [ ] Fail2Ban 已安装并运行
- [ ] 自动安全更新已开启
- [ ] 监控方案已部署
- [ ] 备份策略已配置