VPS 到手后的 5 个安全配置(2026版)

适用系统:Ubuntu 20.04/22.04、Debian 11/12  |  其他发行版命令略有差异

先说结论

新买的 VPS 默认开着密码登录 + root 直连 + 22 端口敞开——等于在互联网上裸奔。这 5 个配置做完,能挡掉 99% 的自动攻击,全程不超过 30 分钟。

很多人买完 VPS 第一件事就是装宝塔或者搭网站,安全配置直接跳过。结果不到一周 SSH 日志里全是暴力破解记录,流量被莫名其妙消耗掉。这篇就是给刚拿到 VPS 的新手准备的——每条命令都带解释,照做就行。

前提:你已经能 SSH 连上 VPS

还没连上的话,先去终端输入:

ssh root@你的VPS_IP地址

输入 VPS 商家给你的 root 密码,登录成功就开始。另外关于选 VPS,如果还没买,可以先看 2026年海外VPS推荐TOP10

第一步:创建普通用户(别用 root)

root 是 Linux 的超级管理员,权限最大。用 root 干日常操作,一个手滑 rm -rf / 就能把系统删光。先建一个普通用户,要用 root 权限时加 sudo

# 创建新用户(把 yourname 换成你的用户名)
adduser yourname

# 把新用户加入 sudo 组
usermod -aG sudo yourname

# 切换到新用户确认 sudo 能用
su - yourname
sudo whoami    # 应该输出 root

adduser 会提示你设置密码。密码记住,后面会用。

第二步:配置 SSH 密钥登录,禁掉密码登录

密码登录最大的问题是——你能猜,别人也能。SSH 密钥是一对公私钥,私钥只有你本地有,不被偷就没人能登。

2.1 在你本地电脑生成密钥

Mac / Linux 用户(在自己的终端里,不是 VPS 上):

ssh-keygen -t ed25519 -C "你的邮箱"
# 一路回车就行,会在 ~/.ssh/ 下生成 id_ed25519 和 id_ed25519.pub

Windows 用户:用 PowerShell 或者装个 Git Bash,命令一样。

2.2 把公钥传到 VPS

在你的本地电脑上执行(不是 VPS):

ssh-copy-id yourname@你的VPS_IP

输入刚才给新用户设的密码。成功后,SSH 到 VPS 就不会再提示密码了。

2.3 禁用密码登录 + 禁用 root 登录

sudo nano /etc/ssh/sshd_config

找到并修改这三行(前面有 # 注释的去掉 #):

PermitRootLogin no          # 禁止 root 通过 SSH 登录
PasswordAuthentication no   # 禁止密码登录
PubkeyAuthentication yes    # 允许密钥登录(通常是默认开启的)

Ctrl+O 保存,Ctrl+X 退出,然后重启 SSH:

sudo systemctl restart sshd
⚠️ 关键一步:在关掉密码登录之前,先新开一个终端窗口确认密钥登录能成功。否则关掉密码登录你也进不去了,只能重装系统。

第三步:改掉 SSH 默认端口(22 → 其他)

全网扫描 22 端口的自动化工具太多了,改了端口能减少 90% 的无效登录尝试。

sudo nano /etc/ssh/sshd_config

找到 #Port 22,改成:

Port 22222    # 或者你喜欢的端口号,建议 10000-65535 之间

保存后重启 SSH:

sudo systemctl restart sshd

以后登录要加 -p 参数指定端口:

ssh -p 22222 yourname@你的VPS_IP
别忘了:如果 VPS 商提供了防火墙面板(如 Vultr),也要在面板里放行新端口,否则连不上。另外确认新端口能连上再关旧终端窗口。

第四步:装 UFW 防火墙,只开需要的端口

UFW 是 Linux 上最简单的防火墙。默认策略是关闭所有入站连接,你一个个放行需要的端口。

# 安装(Ubuntu 通常已自带)
sudo apt update && sudo apt install ufw -y

# 默认策略:拒绝所有入站,允许所有出站
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 只放行你需要的端口
sudo ufw allow 22222/tcp        # SSH(你改过的端口)
sudo ufw allow 80/tcp           # HTTP
sudo ufw allow 443/tcp          # HTTPS

# 开启防火墙
sudo ufw enable

验证一下:

sudo ufw status verbose

应该只看到你放行的端口,其他的全被拒。如果以后装了宝塔面板,别忘了在 UFW 里也放行宝塔的端口(8888 之类的)。

第五步:装 Fail2Ban,自动封 IP

Fail2Ban 会监控 SSH 登录日志,有 IP 短时间内连续失败太多次,自动封禁一段时间。和 UFW 配合使用。

# 安装
sudo apt install fail2ban -y

# 创建本地配置(不直接改默认配置,方便恢复)
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

[sshd] 段落里,确认或修改这几项:

[sshd]
enabled = true
port    = 22222          # 你改过的 SSH 端口
maxretry = 5             # 5 次失败就封
bantime  = 3600          # 封 1 小时(单位秒)
findtime = 600           # 10 分钟窗口

保存后启动:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# 查看封禁状态
sudo fail2ban-client status sshd

以后有 IP 被 BAN 了,可以看:

sudo fail2ban-client status sshd    # 当前被封 IP 列表

做完这5步之后

  • ✅ root 不能直接 SSH 登录了
  • ✅ 只能用密钥登录,密码无效了
  • ✅ SSH 端口从 22 改走了
  • ✅ 除了 80/443/SSH,其他端口全关了
  • ✅ 失败 5 次自动封 IP

这个时候再看 SSH 日志:

sudo tail -f /var/log/auth.log

之前满屏的 Failed password for root 基本消失了。如果想进一步加固,可以继续看 各 VPS 商家评测 了解哪家的默认安全配置做得更好。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部