跳到主要内容

个人 VPS 入门

这组笔记记录的是一条稳妥的个人服务器起步路线:先确认机器身份,再建立不会把自己锁在门外的远程访问,最后安装容器运行时。它不部署任何应用;基础设施还没有站稳时,服务越多,故障只会越有创意。

最终结构

[本地 WSL2]
|
| OpenSSH 客户端 + 用户私钥
v
[Windows 的 Tailscale 网络]
|
| 私有 tailnet 路径
v
[Ubuntu VPS: sshd]
|-- UFW:公网仅允许 80/443
|-- tailscale0:允许 22/tcp
|-- Docker Engine + Compose
`-- /srv:未来服务的运行目录

这里有三层经常被混为一谈:

  1. 网络可达性决定数据包能否到达 VPS。
  2. OpenSSH提供加密会话并验证服务器身份。
  3. SSH 公钥认证证明登录者拥有对应私钥。

Tailscale在这套结构中只提供私有网络路径。真正监听 22 端口和验证用户公钥的仍是 Ubuntu 的 OpenSSH;没有启用另一个名为 Tailscale SSH 的产品功能。

先认识这些词

词语在本系列中的含义
VPS云厂商提供的虚拟 Linux 机器
公网 IP整个互联网可能路由到的地址
Tailscale IP只在同一 tailnet 内可达的 100.x.x.x 地址
端口一台主机上某个网络服务的入口,例如 SSH 的 TCP 22
daemon后台长期运行的服务进程,例如 sshdtailscaleddockerd
systemdUbuntu 管理服务、启动状态和日志的系统
UFWUbuntu 的主机防火墙管理工具
镜像创建容器所用的只读模板
容器镜像运行后的隔离进程及其运行状态
Compose用 YAML 描述一组容器、网络和卷的 Docker 插件

推荐阅读顺序

  1. 架构、安全边界与基础命令
  2. SSH 密钥登录与安全加固
  3. Tailscale 私网与 OpenSSH
  4. UFW 防火墙与防锁死流程
  5. Docker Engine 与 Compose
  6. 目录布局、验证与日常运维
  7. Tmux 实用指南
  8. 在现有服务旁增加新服务

四条最高优先级规则

  • 每条命令先确认是在 本地 WSL2 还是 远程 VPS 执行。
  • 永远不要删除最后一条已验证的 SSH 访问路径。
  • 修改 SSH 或防火墙后,用一个全新的连接验证;旧会话存活不等于新连接可用。
  • 私钥、密码、认证令牌和恢复码不进入命令输出、笔记、Git 或聊天记录。

示例变量

本系列用占位符代替真实机器信息:

VPS_USER=ubuntu
VPS_PUBLIC_IPV4=<public-ip>
TAILSCALE_IPV4=<100.x.x.x>
LOCAL_SSH_PUBLIC_KEY="$HOME/.ssh/id_ed25519.pub"

不要把密码、私钥或 Tailscale auth key 保存成这些变量。

完成边界

基础阶段完成时,应该得到一台:

  • 系统已更新、主机名和时区正确的 Ubuntu VPS;
  • 只能用公钥认证、禁止 root 直接登录的 OpenSSH 服务器;
  • 可以通过 Tailscale 私网建立 OpenSSH 会话的机器;
  • 公网仅开放未来 Web 入口 80/443,不再普遍开放 22;
  • Docker 与 Compose 可用,但没有应用容器;
  • /srv 目录已准备好,但“有目录”不等于“有备份”。
  • 能用 Tmux 保持运维会话,并按独立 Compose 项目逐步增加服务。

官方资料