新 VPS 到手先做这 6 件事:更新、建用户、密钥登录、关密码、防火墙、swap
发布于 2026-10-28
VPS 一开通就有公网 IP,全网的扫描器几分钟内就会来试 root 密码。所以拿到机器后,先做安全设置,再部署东西。
本文以 Ubuntu 24.04 为例,Debian 基本一样。截图都是真实运行结果,演示机器的 IP 用 203.0.113.10 代替,你照做时换成自己 VPS 的 IP。
演示环境:一台全新的 Ubuntu 24.04(主机名
my-vps)和一台“你的电脑”(用户名me)。
第 1 步:登录并更新系统
商家会在邮件或控制台里给你 root 密码。在自己电脑的终端里登录:
ssh root@你的IP
第一次连接会问是否信任这台主机,输入 yes,再输入密码。登录后先把系统更新到最新:
apt update
apt upgrade -y

第 2 步:建一个日常用的普通用户
一直用 root 操作,手一抖就可能删掉系统文件。建一个普通用户(这里叫 deploy,名字随意),给它 sudo 权限,需要管理员权限时再用 sudo:
adduser deploy
usermod -aG sudo deploy
adduser 会让你设置密码(输入时屏幕不显示),后面姓名、电话等直接回车跳过。最后用 id deploy 确认,输出里有 sudo 就对了。

第 3 步:改用 SSH 密钥登录
密码可以被暴力猜,密钥基本猜不出来。
在你自己的电脑上(不是 VPS)生成一对密钥。macOS、Linux 和 Windows 10 以上的终端都自带这个命令:
ssh-keygen -t ed25519 -C "me@laptop"
一路回车即可(想给密钥加密码也可以在提示时输入)。会生成两个文件:~/.ssh/id_ed25519 是私钥,绝不能给别人;id_ed25519.pub 是公钥,要放到服务器上。

然后把公钥装到 VPS 上的 deploy 用户里,会要求输入一次 deploy 的密码:
ssh-copy-id deploy@你的IP
装好后用 deploy 登录试试,这次不会再问密码:

Windows 自带的 OpenSSH 没有
ssh-copy-id。可以在 PowerShell 里运行:type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh deploy@你的IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
第 4 步:禁止 root 登录和密码登录
确认第 3 步的密钥登录成功之后再做这一步,否则会把自己锁在外面。
用 deploy 登录,新建一个配置文件:
echo "PermitRootLogin no" | sudo tee /etc/ssh/sshd_config.d/01-hardening.conf
echo "PasswordAuthentication no" | sudo tee -a /etc/ssh/sshd_config.d/01-hardening.conf
sudo sshd -t && echo "配置检查通过"
sudo sshd -T | grep -E "^(permitrootlogin|passwordauthentication) "

演示环境里模拟了云厂商镜像常带的 50-cloud-init.conf
文件名为什么用 01- 开头? 很多云厂商的 Ubuntu 镜像在同一目录下自带 50-cloud-init.conf,里面写着 PasswordAuthentication yes。SSH 按文件名顺序读取,同一项以先读到的为准。如果你的文件叫 99-xxx.conf,就会被它覆盖,看起来改了其实没生效。最后一条 sshd -T 显示的是真正生效的值,两项都是 no 才算成功。
确认无误后重启 SSH 服务:
sudo systemctl restart ssh
先别关掉当前窗口,另开一个终端测试:用 deploy 能登录,用 root 应该被拒绝。

第 5 步:打开防火墙,只放行需要的端口
Ubuntu 自带 ufw 防火墙。一定先放行 SSH,再启用,不然当前连接会被断开、再也连不上:
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status
80 和 443 是网站用的端口,不建站可以不开。启用时会提示可能中断 SSH 连接,输入 y 确认。

有些商家(如腾讯云、AWS、Vultr)在控制台里还有一层“安全组”或“防火墙”。如果端口在服务器上放行了还是访问不了,去控制台检查那一层。
第 6 步:内存小的机器加 swap
1–2 GB 内存的机器,跑着跑着内存用完,系统会直接杀掉进程。加一块 1–2 GB 的 swap(用硬盘临时充当内存)可以兜底:
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
用 free -h 检查,Swap 那一行有数字就成功了。最后一行命令让重启后自动挂载。swap 比内存慢得多,只是兜底,经常用到就该升级内存了。
做完之后
- 以后都用
ssh deploy@你的IP登录,需要管理员权限的命令前加sudo。 - Ubuntu 默认开着自动安全更新(
unattended-upgrades),不用额外设置。 - 下一步:用 Nginx 部署网站并开启 HTTPS。