Ubuntu VPS初始设置指南 - 服务器配置终端命令

拿到新的Ubuntu VPS之后,很多人会急着安装应用程序,但这是个常见错误。在未经安全加固的服务器上运行应用,就像把贵重物品放在没有锁的房间里。本文整理了获得新Ubuntu VPS后必须立即完成的10个配置步骤,从创建安全用户到安装监控工具,帮您快速构建安全、稳定的服务器环境。

💡 本文测试环境:Ubuntu 22.04 LTS / Ubuntu 24.04 LTS · 在AsiaGB泰国VPS(CS Loxinfo)和新加坡VPS(OVHcloud SGP)上验证 · 大多数命令适用于Ubuntu 20.04及以上版本

1 创建非root用户

新VPS通常会提供root账户和IP地址。第一步是创建一个拥有sudo权限的普通用户,然后停止直接使用root。root用户拥有系统的完整权限,一个错误的命令(如 rm -rf /)可以毁掉整个服务器。

# 使用root登录
ssh root@YOUR_SERVER_IP

# 创建新用户(将username替换为您想要的名称)
adduser username

# 将用户添加到sudo组
usermod -aG sudo username

# 打开新终端,测试新用户登录
ssh username@YOUR_SERVER_IP

# 测试sudo权限
sudo whoami
# 应该输出: root
✅ 建议:避免使用 admin、user、ubuntu 等常见用户名,因为攻击机器人会自动尝试这些名称。选择不易被猜到的用户名可以提高安全性。

2 配置SSH密钥认证

SSH密钥比密码安全得多,因为它使用非对称加密技术,在实际操作中几乎无法被暴力破解。以下操作在您的本地机器上进行,而不是服务器上。

在本地机器上生成SSH密钥对

# macOS / Linux(在您的本地机器上)
ssh-keygen -t ed25519 -C "[email protected]"
# 按Enter接受默认设置,或设置密钥密码以增强安全性

# 将公钥复制到服务器
ssh-copy-id username@YOUR_SERVER_IP

# 或手动操作
cat ~/.ssh/id_ed25519.pub | ssh username@YOUR_SERVER_IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"

Windows用户(PowerShell)

# PowerShell (Windows 10/11)
ssh-keygen -t ed25519 -C "[email protected]"

# 将密钥复制到服务器
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh username@YOUR_SERVER_IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

配置完成后,测试使用SSH密钥登录:

ssh -i ~/.ssh/id_ed25519 username@YOUR_SERVER_IP

3 禁用root登录和密码认证

确认SSH密钥可以正常工作后,立即禁用root登录和密码认证,防止暴力破解攻击。

# 编辑SSH配置文件
sudo nano /etc/ssh/sshd_config

# 找到并修改以下几行:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

# 重启SSH服务
sudo systemctl restart sshd

# ⚠️ 修改前务必在另一个终端测试SSH密钥登录!
⚠️ 重要警告:禁用密码认证之前,请确保SSH密钥在另一个独立终端中已经能够正常工作。如果SSH密钥无法使用且密码认证已关闭,您将被锁定在服务器外,需要通过VPS控制台进行恢复。

4 配置UFW防火墙

UFW(简单防火墙)是iptables的前端工具,使用简单,可以有效限制进入服务器的流量,只允许必要的连接。

# 检查UFW状态
sudo ufw status

# 设置默认策略
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 允许SSH(重要:必须在启用UFW之前执行)
sudo ufw allow ssh

# 允许HTTP和HTTPS(如果是Web服务器)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# 启用UFW
sudo ufw enable

# 查看已配置的规则
sudo ufw status verbose

按用途开放端口参考

用途 端口 UFW命令
SSH(默认) 22/tcp sudo ufw allow ssh
Web服务器 HTTP 80/tcp sudo ufw allow 80/tcp
Web服务器 HTTPS 443/tcp sudo ufw allow 443/tcp
MySQL(仅本地) 3306/tcp 无需开放(使用localhost)
自定义SSH端口 例如2222 sudo ufw allow 2222/tcp
Node.js应用 例如3000 sudo ufw allow 3000/tcp

5 更新系统软件包

新Ubuntu VPS通常包含可能存在安全漏洞的旧软件包,在完成基础安全配置后,立即更新系统是非常重要的。

# 更新软件包列表
sudo apt update

# 升级所有已安装的软件包
sudo apt upgrade -y

# 升级内核和关键依赖项
sudo apt full-upgrade -y

# 删除不再需要的软件包
sudo apt autoremove -y
sudo apt autoclean

# 如果有内核更新,重启服务器
sudo reboot
💡 提示:运行 sudo apt full-upgrade 后如果看到"A reboot is required"提示,请立即重启服务器,以确保新内核生效,安全补丁真正发挥作用。

6 配置Swap交换空间

Swap空间是SSD上的一块区域,当内存不足时充当临时内存使用。虽然速度比真实RAM慢,但对于内存较小的VPS来说至关重要,可以防止系统崩溃。

建议的Swap大小

VPS内存 建议Swap大小 说明
512MB - 1GB 1-2GB 频繁使用Swap — 考虑升级内存
2GB 2-4GB 适合WordPress、小型Node.js应用
4GB 2-4GB 很少使用 — 主要作为安全网
8GB以上 1-2GB(可选) 通常不需要
# 检查当前Swap状态
sudo swapon --show
free -h

# 创建2GB的Swap文件
sudo fallocate -l 2G /swapfile
# 如果fallocate不支持,使用:
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

# 设置正确权限
sudo chmod 600 /swapfile

# 激活Swap
sudo mkswap /swapfile
sudo swapon /swapfile

# 验证
free -h

# 设置开机自动挂载
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

# 调整swappiness(服务器建议设为10)
sudo sysctl vm.swappiness=10
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf

7 设置时区和主机名

正确的时区设置确保日志文件时间戳、cron定时任务和SSL证书验证的准确性。主机名则帮助在管理多台服务器时快速识别。

# 查看当前时区
timedatectl

# 设置时区为曼谷(泰国服务器)
sudo timedatectl set-timezone Asia/Bangkok

# 查看所有可用时区
timedatectl list-timezones | grep Asia

# 设置主机名
sudo hostnamectl set-hostname my-server-name

# 更新/etc/hosts文件
sudo nano /etc/hosts
# 添加:127.0.1.1   my-server-name

# 验证设置
hostname
timedatectl
💡 UTC还是Asia/Bangkok?面向泰国用户的服务器可以使用Asia/Bangkok,便于阅读日志。如果服务多个时区的用户,建议使用UTC,然后在应用层处理时区转换。

8 安装Fail2Ban

Fail2Ban监控日志文件并自动封锁多次登录失败的IP地址,有效防止SSH暴力破解攻击,无需人工干预。

# 安装Fail2Ban
sudo apt install fail2ban -y

# 创建自定义配置文件(不要直接修改.conf文件)
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

# 找到并修改[sshd]部分:
# enabled = true
# port    = ssh
# maxretry = 5
# bantime  = 3600
# findtime = 600

# 启动并设置开机自启
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# 检查状态
sudo fail2ban-client status
sudo fail2ban-client status sshd

查看和解封IP

# 查看所有被封锁的IP
sudo fail2ban-client status sshd

# 解封特定IP
sudo fail2ban-client set sshd unbanip YOUR_IP_ADDRESS

# 查看Fail2Ban日志
sudo tail -f /var/log/fail2ban.log

9 启用自动安全更新

每天手动更新安全补丁几乎不可行。启用unattended-upgrades让Ubuntu自动安装安全更新,在不影响正常运行的情况下保持系统安全。

# 安装unattended-upgrades
sudo apt install unattended-upgrades -y

# 启用自动更新
sudo dpkg-reconfigure --priority=low unattended-upgrades
# 选择"Yes"启用

# 查看配置
cat /etc/apt/apt.conf.d/50unattended-upgrades

# 测试运行(不实际安装)
sudo unattended-upgrades --dry-run --debug
💡 说明:unattended-upgrades默认只更新安全软件包,不会更新普通应用软件包,因此不会影响正在运行的应用程序。

10 安装基础监控工具

拥有能够实时查看资源使用情况的工具,可以让您在出现问题时更快地进行诊断和排查。这些是每个系统管理员必备的基础工具。

# 安装基础监控工具
sudo apt install htop ncdu tree curl wget git -y

# htop — 交互式进程查看器
htop

# ncdu — 磁盘使用分析工具
ncdu /

# 查看磁盘使用情况
df -h

# 查看内存使用情况
free -h

# 查看网络连接
ss -tulpn

# 查看CPU信息
lscpu

# 查看系统负载
uptime

必备工具汇总

工具 用途 命令
htop 实时查看进程、CPU、内存 htop
ncdu 找出占用磁盘最多的文件 ncdu /
ss 查看开放端口和连接 ss -tulpn
fail2ban-client 查看被封锁的IP fail2ban-client status
ufw status 检查防火墙规则 sudo ufw status verbose

总结:VPS部署后的10步检查清单

以下是获得新Ubuntu VPS后应完成的所有步骤的汇总检查清单:

步骤 操作 重要性 所需时间
1 创建非root sudo用户 🔴 必须 2分钟
2 配置SSH密钥认证 🔴 必须 5分钟
3 禁用root登录和密码认证 🔴 必须 2分钟
4 配置UFW防火墙 🔴 必须 3分钟
5 更新系统软件包 🔴 必须 5-10分钟
6 配置Swap空间 🟡 建议(低内存) 3分钟
7 设置时区和主机名 🟡 建议 2分钟
8 安装Fail2Ban 🟡 建议 5分钟
9 启用自动安全更新 🟡 建议 2分钟
10 安装监控工具 🟢 有时间就做 2分钟

完成前4个步骤(创建用户、SSH密钥、禁用root、防火墙配置)只需不到15分钟,但可以将被攻击的风险降低90%以上。在安装任何应用程序之前,请务必先完成这些基础安全配置。

需要开箱即用的VPS?

AsiaGB泰国VPS(CS Loxinfo)提供Ubuntu 22.04/24.04 LTS · SSD存储 · 99% Uptime保证 · 支持SSH密钥即时部署 · 全天候技术支持

查看泰国VPS套餐