你的第一台 VPS:从购买到登录、密钥配置、加固、跑起第一个服务
写给谁看:完全没碰过服务器、只懂"开网页、装软件"的朋友。
学完你会:花几十块钱买到一台独属于自己的服务器,用 SSH 登录进去,配好密钥登录,完成基础安全加固,并跑起来第一个 Nginx 服务。
预计耗时:3060 分钟(主要看你挑机器的速度)。
你需要准备:一台电脑(Windows 10/11、macOS 或 Linux 均可,自带 SSH 客户端)、一个能付款的支付方式(支付宝/信用卡/PayPal,取决于服务商)、约 30 元人民币起。
—
一、先搞懂:什么是 VPS?
一段话讲清:VPS(Virtual Private Server,虚拟专用服务器)就是一台"云上的物理小电脑"——商家把一台大服务器用虚拟化技术切分成几份,每一份都给你独立的 CPU、内存、硬盘和 root(最高)权限,你可以把它当成一台只有你能控制的真实电脑来装任何东西、跑任何程序。它和另外两种常见东西的区别是:
- 虚拟主机(Shared Hosting):一台物理机上挤着几百个网站,你只分到"一个放网页的目录",没有 root 权限,不能装软件、不能改系统,只适合放几个静态网页;
- 云服务器(如 ECS/CVM):和 VPS 技术同源,但通常是按量付费、资源可弹性升降配、配一整套云控制台(安全组、快照、对象存储),价格更贵、玩法更企业向;VPS 则是固定配置、按月/按年一次性买断的小盒子,对个人玩家最划算。
一句话总结:虚拟主机是"合租屋的柜子",VPS 是"整套小公寓",云服务器是"带物业的智能公寓"。
主流服务商一句话点评
| 服务商 | 一句话点评 |
| 搬瓦工(BandwagonHost) | 个人入门最低价(常有几百元人民币一年的优惠),面板简单好上手;资源是共享型,高峰期速度波动,无大陆节点。 |
| Vultr | 全球节点多,5 分钟开通、按小时计费想玩多久玩多久,质量稳定,非常适合练手;付款偏海外(PayPal/加密货币,不友好支付宝)。 |
| 阿里云 | 大陆访问快、稳定性好、新用户活动多(轻量服务器几十块一年);需实名认证,大陆节点绑域名用 80/443 端口必须 ICP 备案。 |
| 腾讯云 | 和阿里云类似,轻量服务器性价比高,学生/新用户优惠多,备案流程也成熟。 |
| 华为云 | 质量稳、常有新用户免费试用,文档和客服中规中矩,个人玩家可选。 |
| 甲骨文云(OCI) | Always Free 免费层最香(ARM 4 核 24G 内存可永久免费),适合白嫖练手;但免费实例需要抢、海外访问、控制台对新手略复杂。 |
💡 给零基础的建议:想体验"最便宜的入门",选搬瓦工;想"随时开随时关、随便折腾",选 Vultr;主要在国内用且想备案,选阿里云/腾讯云轻量;想白嫖,蹲一个 OCI 免费实例。
—
二、购买流程:从注册到拿到 IP 和 root 密码
以任意一家为例,流程几乎都一样,共四步:
2.1 选配置和系统
| 项目 | 建议 | 为什么 |
| CPU / 内存 | 12 核 / 12GB 就够 | 跑 Nginx、博客、小脚本完全够用,入门别买大。 |
| 硬盘 | ≥20GB SSD | 系统 + 软件 + 日志,20GB 起步不慌。 |
| 带宽 | ≥15Mbps | 大陆访问选带宽大的;海外节点很多是"流量套餐"而不是带宽,注意看说明。 |
| 系统镜像 | Debian 12 或 Ubuntu 24.04 | 见下表。 |
| 系统 | 推荐理由 |
| Debian 12(首选) | 小而稳,内存占用低,官方支持周期长(约 6.5 年),服务器圈公认的"省心系统"。 |
| Ubuntu 24.04 | 教程和资料最多,apt 用着顺手,LTS 版本支持 5 年,新手友好。 |
| ⚠️ 不推荐 | CentOS(7 已停止维护,8 已退役,生态混乱);Windows Server(贵、占内存、不适合本教程)。 |
本文所有命令按 Debian 12 / Ubuntu 24.04 编写,两者基本通用。
2.2 选地区(节点)
- 人在大陆、访问者也主要在大陆 → 选大陆节点(阿里/腾讯/华为),速度快,但注意:实名认证 + 绑域名需 ICP 备案。
- 学习练手、不想备案、想访问海外网站 → 选海外节点(日本、新加坡、美西等),注册即可用,用 IP 访问不需要备案。
- 原则:离主要使用者越近,延迟越低。
2.3 付款
- 国内厂商:支付宝/微信/信用卡,新用户首单通常有大额优惠。
- 搬瓦工/Vultr:信用卡/PayPal(部分支持支付宝)。
- 按年付最划算,按小时付最灵活。付款成功后,实例通常几分钟内创建完成。
2.4 你拿到了什么?
开通完成后,你会在控制台页面和欢迎邮件里收到三样东西(把它们抄进备忘录):
| 拿到什么 | 长什么样 | 作用 |
| 公网 IP | 形如 203.0.113.10 | 这台服务器在互联网上的"门牌号",SSH 和网页访问都用它。 |
| root 密码 | 一串随机字符 | root(最高权限)账号的登录密码,只能用它登录第一台。 |
| 控制台/VNC 地址 | 一个网址 | 网页版"服务器机房",万一 SSH 进不去,靠它救命(可以看服务器画面、重置密码)。 |
—
三、第一次 SSH 登录
3.1 SSH 是什么
SSH(Secure Shell)是一个加密的远程登录协议:你在自己电脑的终端里敲命令,就像直接坐在服务器前操作它一样。Windows 10/11、macOS、Linux 都自带 SSH 客户端(打开"终端 / 命令提示符 / PowerShell"直接就能用),不需要额外安装。
3.2 登录命令
打开你电脑的终端(Windows 按 Win+R 输入 powershell 回车),执行:
ssh root@203.0.113.10 # 把 IP 换成你的公网 IP;root 是默认最高权限用户
3.3 首次连接:指纹确认
第一次连一台新服务器,终端会显示:
The authenticity of host '203.0.113.10 (203.0.113.10)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
输入 yes 回车。这一步是告诉你:这台服务器的"身份证指纹"你第一次见,确认后会被记在你电脑里(~/.ssh/known_hosts),以后再连就会自动比对——如果哪天指纹变了,说明可能有人在中间冒充服务器,会立刻警告你。
接着输入 root 密码:
root@203.0.113.10's password:
⚠️ 输入密码时屏幕完全不显示任何字符(连 * 都没有),这是正常的安全设计,盲打完按回车即可。
看到类似 root@vps1:~# 的提示符,恭喜,你已经坐在自己的服务器里了。
3.4 第一件事:改掉 root 密码
初始密码是随机的、你也可能已经抄错,先换一个只有你知道的强密码:
passwd root
# New password: 输入新密码(同样不显示)
# Retype new password: 再输一遍
小提醒:这个密码后面会被我们"禁用密码登录"取代,所以不用纠结它,但现在必须能正确登录,否则下面步骤做不了。
—
四、创建一个普通用户,并给他 sudo 权限
4.1 为什么不用 root 干活?
root 是"上帝账号",误敲一条命令(比如 rm -rf /)就能把系统删光,而且很多程序用 root 跑还有额外风险。标准做法是:日常用一个普通用户,需要执行管理员命令时临时加 sudo 前缀。sudo = “以管理员身份运行这一条命令”,执行后系统会要求输入你自己的密码做确认。
4.2 创建用户
adduser myuser # myuser 换成你想用的名字,建议纯小写字母
会依次让你做:
New password: 输入这个新用户的密码(不显示)
Retype new password: 再输一遍
# 接下来是一堆"信息确认"(全名/电话/…):直接一路回车跳过即可
Is the information correct? [Y/n] 输入 Y 回车,创建完成
4.3 加入 sudo 组(Debian/Ubuntu 的管理员组)
usermod -aG sudo myuser
-G sudo:把用户加进 sudo 组(Debian/Ubuntu 约定:在这个组里就能用 sudo);
-a:追加,不加这个标志会把用户的其他组全清掉,是新手常踩的坑。
4.4 验证
su - myuser # 切换到新用户(输入刚才设置的 myuser 密码)
sudo whoami # 测试 sudo:如果输出 root,说明配置成功
exit # 退回 root
—
五、配置 SSH 密钥登录(比密码安全得多)
5.1 密钥原理,一句话
密钥登录是一对"锁和钥匙":公钥(公开没关系)装到服务器上,相当于锁;私钥只留在你的电脑上,是唯一能开锁的钥匙。登录时服务器出一道只有私钥能解的"谜题",解对了才放行。没有密码可爆破,天然比密码安全。
🔒 铁律:私钥文件绝不能发给任何人、上传到任何网站。 丢了可以重新生成,泄露等于把家门钥匙挂在大街上。
5.2 在本机生成密钥对
在你自己的电脑终端里执行(注意:这一步是在你的电脑上,不是服务器上!):
ssh-keygen -t ed25519 -C "my-first-vps"
# 提示 Enter file in which to save the key: 直接回车,用默认路径 ~/.ssh/id_ed25519
# 提示 Enter passphrase: 直接回车留空(输入密码就能解锁私钥,多一层保护,但新手留空省心)
# 提示 Enter same passphrase again: 再回车
# 完成后会生成两个文件:
# 私钥 ~/.ssh/id_ed25519 ← 只有你能碰
# 公钥 ~/.ssh/id_ed25519.pub ← 可以随便给人/服务器
ed25519 是当前主流的密钥算法,短小且安全;-C 只是给这把钥匙加个备注,方便日后认出来。
5.3 把公钥推送到服务器
方法 A:一键推送(推荐)
在你自己电脑的终端执行(用普通用户 myuser 推):
ssh-copy-id myuser@203.0.113.10
# 输入 myuser 的密码一次
# 显示 "Number of key(s) added: 1" 即成功
它帮你把公钥追加到服务器的 ~/.ssh/authorized_keys 里,并把权限设对。
方法 B:手动复制(ssh-copy-id 不可用时)
# ① 在自己电脑上,打印公钥并整行复制:
cat ~/.ssh/id_ed25519.pub
# ② 登录服务器,以 myuser 身份执行:
su - myuser
mkdir -p ~/.ssh && chmod 700 ~/.ssh
echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA...(你复制的完整公钥)" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
为什么权限这么讲究? SSH 发现 ~/.ssh 或 authorized_keys 权限太松(比如别人可读),会认为密钥"可能泄露给他人",直接拒绝使用——这是新手最常见的 Permission denied (publickey) 原因之一。.ssh 必须 700,authorized_keys 必须 600。
5.4 验证密钥登录
新开一个终端窗口(保持原来那个窗口别关!),执行:
ssh myuser@203.0.113.10
# 不输任何密码直接进去了 → 密钥登录配置成功 ✅
顺手做一个"登录别名",以后登录只敲一个词。在自己电脑上编辑 ~/.ssh/config(没有就新建):
Host myvps
HostName 203.0.113.10
User myuser
以后 ssh myvps 即可。
—
六、安全加固第一步
为什么要加固?你的服务器 IP 是公开的,从它上线的那一刻起,就在被全网脚本不间断地尝试爆破密码。加固就是把"能被撬的门"先关上。
6.1 改掉 SSH 端口(22 → 2222)
22 端口是爆破脚本的"标配扫描目标",换个冷门端口能挡掉 90% 的自动攻击(不是绝对安全,但成本最低、收益最高)。
以 root(或 sudo 的 myuser)登录服务器,编辑 SSH 配置:
sudo nano /etc/ssh/sshd_config
找到并修改/添加以下三行(前面的 # 是注释,要改成无 # 生效;nano 里用方向键移动,Ctrl+O 回车保存,Ctrl+X 退出):
# 改端口(默认是 Port 22)
Port 2222
# 禁止 root 直接登录(后面第 6.2 步)
PermitRootLogin no
# 禁止密码登录,只认密钥(后面第 6.2 步)
PasswordAuthentication no
重启 SSH 服务让配置生效:
sudo systemctl restart ssh
⚠️ 关键操作:先开新窗口验证,再关旧窗口!
ssh -p 2222 myuser@203.0.113.10 # 注意多了 -p 2222
能进去,才关掉原来用 22 端口登录的窗口。如果改完端口就进不去了:别慌,登录服务商控制台用 VNC 网页终端进系统,把 Port 改回 22 即可(这就是控制台链接的价值)。
📌 别忘了云厂商的"安全组"!多数云平台(阿里/腾讯/华为/OCI/Vultr)在系统防火墙之外还有一层安全组/网络防火墙,你改了端口,必须去控制台的安全组里放行 2222/tcp,否则端口改了也连不上。这个坑下面第八节会再讲。
6.2 禁用密码登录
6.1 里其实已经把两行改好了,这里解释为什么,并确认生效:
| 配置项 | 设成什么 | 为什么 |
PermitRootLogin no | 禁止 root 远程登录 | 爆破脚本的目标永远是 root,直接砍掉目标;日常管理用 myuser + sudo 足够。 |
PasswordAuthentication no | 只认密钥、不认密码 | 密码可以被字典爆破,私钥不会(只要私钥不泄露)。 |
sudo systemctl restart ssh 后,再用新窗口试一次 ssh -p 2222 myvps(用你的别名更省事):不输密码能进 → 加固生效。
⚠️ 从现在起"忘带私钥 = 锁在门外"。所以:把私钥文件备份到 U 盘/密码管理器,或现在就给第二台设备也生成并推送一套密钥。万一真丢了:用服务商控制台 VNC 进去,把 PasswordAuthentication 临时改回 yes 救急,再恢复。
6.3 装 fail2ban:自动拉黑爆破者
fail2ban 是个"看门狗":发现某个 IP 连续登录失败,就自动把它的 IP 拉黑一段时间,让爆破彻底失效。
sudo apt update
sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban # 启动并设置开机自启
# 写一份最基础的自定义规则(端口改成你的 2222;10 分钟内失败 3 次,拉黑 1 小时)
sudo tee /etc/fail2ban/jail.local > /dev/null <<'EOF'
[sshd]
enabled = true
port = 2222
maxretry = 3
findtime = 10m
bantime = 1h
EOF
sudo systemctl reload fail2ban
sudo fail2ban-client status sshd # 查看当前被拉黑的 IP 数量,输出 found 0 个表示正常运行
6.4 开 ufw 防火墙:只开必要的门
服务器里跑着什么服务、开什么端口,由防火墙说了算。ufw(Uncomplicated Firewall)是 Debian/Ubuntu 自带的简洁防火墙。
sudo ufw default deny incoming # 默认拒绝一切"外面进进来"的连接
sudo ufw default allow outgoing # 允许服务器自己访问外网(装软件要用)
sudo ufw allow 2222/tcp comment 'SSH 管理' # 放行你的新 SSH 端口
sudo ufw allow 80/tcp comment 'HTTP 网页' # 放行 80(下一步 Nginx 要用)
sudo ufw allow 443/tcp comment 'HTTPS 网页' # 放行 443(以后上证书要用)
sudo ufw enable # 启用(会提示确认,输 y)
sudo ufw status verbose # 查看状态:三条 ALLOW 规则就是配置成功
顺序建议:先装 ufw、放行端口,再做 6.⅙.2 的 SSH 改造,这样万一中途出问题,22 端口还在,随时能进。本文按"讲一个做一个"的顺序写,你完全可以先跳到 6.4 把防火墙建好再继续。
加固小结:改端口(躲掉扫盲攻击)+ 禁密码(砍掉爆破手段)+ fail2ban(拉黑死缠烂打)+ ufw(只开必要门),四层叠加,一台个人 VPS 的日常防御到位了。
—
七、跑起第一个服务:Nginx
7.1 安装
sudo apt update # 先刷新软件源索引(相当于"刷新应用商店列表")
sudo apt install -y nginx # 安装 Nginx,一个主流的高性能网页服务器
7.2 启动、设置开机自启、查看状态
sudo systemctl start nginx # 启动(装完其实已自动启动,重跑一次也无妨)
sudo systemctl enable nginx # 设置开机自动启动(重启服务器后不用手动开)
sudo systemctl status nginx # 查看状态,看到 "active (running)" 绿色字样即正常
常用 systemctl 命令速记:start 启动 / stop 停止 / restart 重启 / status 看状态 / enable·disable 开关机自启。
7.3 浏览器访问,看到欢迎页
在你自己电脑的浏览器地址栏输入:
http://203.0.113.10 # 换成你的公网 IP,不要加 https
看到 “Welcome to nginx!” 页面 —— 你的服务器第一次"开口说话"了 🎉
打不开?按顺序查:① sudo systemctl status nginx 是否在 running;② ufw 是否放行了 80;③ 云厂商安全组是否放行了 80。三关全过才能访问。
7.4 改个属于自己的欢迎页(可选)
sudo nano /var/www/html/index.html # Nginx 默认网页文件
# 把里面的内容改成:
# <h1>你好,这是我在 2026 年买下的第一台 VPS!</h1>
# Ctrl+O 回车保存,Ctrl+X 退出
# 刷新浏览器,看到你的字 → 全流程打通
到这一步:购买 → 登录 → 密钥 → 加固 → 第一个服务,你已经完整走完了。
—
八、常见坑与避坑表
| # | 症状 | 最常见原因 | 解决办法 |
| 1 | ssh: connect to host ... port 22: Connection timed out(连接超时) | ① 云控制台"安全组"没放行 22(最高频!)② 服务器 ufw 没放行 ③ 服务商直接封了 22 端口 | 先查控制台安全组/防火墙规则;仍不行就改用非 22 端口,且安全组 + ufw 两处都放行;最后检查实例是否在运行 |
| 2 | Connection refused(连接被拒) | 端口到了机器但没服务在监听:SSH 没跑,或 -p 端口写错 | 控制台 VNC 进去看 sudo systemctl status ssh;确认 -p 参数和 sshd_config 里的 Port 一致 |
| 3 | Permission denied (password) 密码错误 | 密码真的错 / 用户名错(用 root 却输了 myuser 的密码)/ 密码含特殊字符被终端转义 | 控制台重置密码;确认用户与密码匹配;密码尽量字母+数字 |
| 4 | Permission denied (publickey) 密钥不认 | ① 公钥没推到当前登录用户的家目录 ② .ssh 不是 700 / authorized_keys 不是 600 ③ 本机私钥选错了对 | ssh-copy-id 重推一次;chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys;注意密钥必须推到"你用来登录的那个用户"名下 |
| 5 | 改完 SSH 端口后彻底连不上 | 只改了 sshd_config,忘了在云安全组放行新端口 | 控制台放行 2222/tcp;仍不行就 VNC 进系统检查 sshd_config 是否真的生效 |
| 6 | 人不操作一会儿,SSH 就断线 | 中间链路(NAT/运营商)超时掐断空闲连接,不是服务器问题 | 登录加保活:ssh -o ServerAliveInterval=30 myvps,或写进 ~/.ssh/config 的 ServerAliveInterval 30 |
| 7 | 服务器完全连不上,ping 也通 | 欠费停机 / 流量超额被限速 / 实例被暂停 | 登录服务商控制台看实例状态和账单 |
| 8 | apt 安装极慢或超时 | 没换国内镜像源(大陆节点尤其明显) | 换成阿里/腾讯/中科大等镜像源后再 apt update |
| 9 | SSH 正常,但浏览器打不开服务器 IP | 服务没跑 / 80 没放行 | sudo systemctl status nginx;sudo ufw status 和云安全组都要有 80/tcp |
| 10 | 大陆节点绑域名后打不开 | 没做 ICP 备案,大陆机房 80/443 被运营商拦 | 走阿里云/腾讯云备案流程(约 12 周),或改用 IP 访问,或换海外节点 |
| 11 | 禁用密码登录后,私钥丢了,人被锁在门外 | 没备份私钥、没留后门 | 唯一解法:服务商控制台 VNC 进系统,临时把 PasswordAuthentication 改回 yes,进去后补密钥、再改回 no。教训:私钥一定备份 |
| 12 | 同一台服务器,有的设备能密钥登录、有的不能 | 密钥只在其中一台设备生成/推送过 | 每台设备都跑一遍 ssh-keygen + ssh-copy-id,公钥会追加进 authorized_keys,互不影响 |
—
九、拿到新 VPS 先做的 10 件事(清单)
以后每买一台新机器,按这张表从上到下过一遍,30 分钟内它就是一台"可以放心用"的服务器:
| 步骤 | 事项 | 参考命令 |
| 1 | 记录一切:公网 IP、用户、密码/私钥存放位置、服务商控制台 URL,写进备忘录(这是唯一能救你于"锁门外"的凭证) | — |
| 2 | 设置时区和日期 | sudo timedatectl set-timezone Asia/Shanghai |
| 3 | 更新系统(补安全补丁) | sudo apt update && sudo apt -y upgrade |
| 4 | 改掉 root 初始密码 | passwd root |
| 5 | 创建普通用户并加入 sudo 组 | adduser myuser && usermod -aG sudo myuser |
| 6 | 本机生成密钥对,推送公钥,新窗口验证密钥登录可用 | ssh-keygen -t ed25519 → ssh-copy-id myuser@IP |
| 7 | 修改 SSH 端口,云安全组 + ufw 双双放行新端口,新窗口验证后关旧窗口 | Port 2222 → systemctl restart ssh |
| 8 | 禁用 root 登录和密码登录(PermitRootLogin no、PasswordAuthentication no) | 编辑 /etc/ssh/sshd_config 后重启 ssh |
| 9 | 装 fail2ban 反爆破 + 开 ufw 防火墙(只留 SSH/80/443) | 见 6.3 / 6.4 |
| 10 | 跑第一个服务验证环境:装 Nginx、开自启、浏览器看到欢迎页 | sudo apt install -y nginx && sudo systemctl enable --now nginx |
做完这 10 件事,你的第一台 VPS 才算真正"长在了自己手里":进得去、锁得住、打得开、重启后还活着。接下来你可以往里装博客、代理、爬虫、Docker……那都是下一篇的故事了。
(完)