云服务器初始配置与 SSH 密钥认证

日期:2026-07-28
服务器:腾讯云轻量应用服务器 2核2G3M 40GB SSD(Ubuntu 22.04 LTS)


一、服务器上的三个用户

云服务器上有三个用户,他们各自的身份和角色完全不同:

用户名 UID 本质 能否直接登录 用途
root 0 Linux 超级管理员,拥有最高权限,可以做任何事情(包括删掉整个系统) ❌ 默认禁止远程登录(PermitRootLogin no 系统底层操作,日常不使用
ubuntu 1000 腾讯云 Ubuntu 镜像默认创建的普通用户,自带 sudo 权限 云服务商给你的初始入口,配置好之后作为备用账户
renbudang 1001 你自己创建的普通用户,也已经赋予 sudo 权限 ✅(主账户) 从今以后你日常登录和操作的账户

为什么有三个用户?

root  → Linux 系统内置的超级管理员。
         Ubuntu 默认禁用了它的远程登录,这是安全设计——
         root 权限太大,一旦被入侵后果不可控。
         日常工作不应该用 root,仅在必要时通过 sudo 提权。

ubuntu → 云服务商(腾讯云)在创建 Ubuntu 虚拟机时自动生成的。
         它在你拿到服务器之前就存在了。
         它是一个有 sudo 权限的普通用户,是你拿到服务器后第一个能登录的人。
         配置完成后保留它作为"紧急备用入口"——
         万一你把 renbudang 的 sudo 权限弄坏了,还能用它救回来。

renbudang → 你给自己创建的日常用户。
           sudo usermod -aG sudo renbudang 给了它管理员权限。
           从今以后这就是"你"在服务器上的身份。

核心认知

  • ubuntu 不是 root,它只是一个能用 sudo 提权的普通用户(UID=1000)
  • root 的 UID 永远是 0,这是 Linux 内核判断"是不是 root"的唯一依据
  • 日常操作用 renbudang + sudo,不要直接以 root 身份操作

二、我们在这台服务器上做了什么

操作时间线

1. 购买创建
   → 选 Ubuntu 22.04 LTS 系统镜像(纯操作系统,不装任何预装软件)
   → 设了 renbudang 用户和密码
   → 服务器启动,获得公网 IP

2. 首次连接
   → 在 Windows PowerShell 里用 ssh renbudang@公网IP 测试连接
   → 初始使用密码登录

3. 生成 SSH 密钥对
   → 在本地 Windows 上执行 ssh-keygen -t ed25519
   → 生成了一对密钥:私钥(id_ed25519)和公钥(id_ed25519.pub)

4. 上传公钥到服务器
   → 将公钥内容追加写入服务器的 ~/.ssh/authorized_keys
   → 服务器从此认这把私钥

5. 配置 SSH 安全加固
   → 禁止 root 远程登录
   → 禁止密码登录(只用密钥)
   → 后续连接无需输密码

三、SSH 密钥认证原理(公钥与私钥)

我的问题

“密钥公钥什么的我还是不明白,你是用 Windows 的工具创建了一个密钥,然后上传到云服务器里和用户 renbudang 绑定了吗?”

回答

是的,核心逻辑就是你说的这样。

具体过程:

你的电脑(Windows)                         云服务器(Ubuntu)
                                        
┌──────────────────────┐                  ┌─────────────────────────┐
│  私钥 id_ed25519      │  ← 绝不上传 →    │  公钥 authorized_keys   │
│  你自己留着,谁都不给    │                  │  可以随便贴,不怕泄露     │
│                        │                  │                         │
│  相当于:你的钥匙        │                  │  相当于:你装在门上的锁     │
└──────────────────────┘                  └─────────────────────────┘

基本定义

概念 是什么 位置 能不能给出去
私钥(id_ed25519) 你的数字身份凭证,用来证明"我就是我"。服务器用公钥验证你的私钥签名,确认你是持有者 C:\Users\Administrator\.ssh\id_ed25519 ❌ 绝对不给任何人。谁拿到谁就能冒充你登录
公钥(id_ed25519.pub) 与私钥配对的"锁"。数学上可以从公钥验证签名,但永远不能从公钥反推出私钥 C:\Users\Administrator\.ssh\id_ed25519.pub(本地)和 服务器 ~/.ssh/authorized_keys ✅ 可以到处贴,本来就是公开的
authorized_keys 服务器上存储"允许哪些公钥持有者登录"的文件。每一行一个公钥 服务器 ~/.ssh/authorized_keys 内容是公钥,公开也没问题

登录时发生了什么

1. 你执行 ssh renbudang@154.8.147.160
2. 服务器说:"你声称你是 renbudang,请证明你有对应的私钥"
3. 你的电脑用私钥(id_ed25519)对一段随机数据做数字签名
4. 服务器用 authorized_keys 里存储的公钥验证这个签名
5. 匹配 → 确认你就是私钥持有者 → 放行
   不匹配 → 拒绝登录

整个过程中:
  - 私钥从来没有离开过你的电脑
  - 密码根本没有被使用
  - 你感觉不到这个过程,敲完命令就直接进去了

我关于这个过程的提问

“ed25519 是什么?”

Ed25519 是一种 SSH 签名算法。 它是目前公认最优的 SSH 密钥算法:

对比维度 Ed25519 RSA(老方案)
安全等级 最高(等同 RSA 3072 bit) 需 4096 bit 才够安全
密钥长度 256 bit,极短 至少 2048 bit
签名速度 极快 慢几十倍
随机数依赖 确定性算法,不受随机数质量影响 依赖随机数质量

结论:选了 ed25519 是正确的。

“authorized_keys 文件里的 your-email 是什么意思?”

这是 ssh-keygen -t ed25519 -C "your-email"-C(comment,注释)参数的值。当时直接复制了命令没有改成真实邮箱。它纯粹是一个标签,对认证功能没有任何影响,可以随便改成 renbudang-windows 或真实邮箱,方便以后识别这把密钥是从哪台机器生成的。

私钥安全底线

id_ed25519 这个文件:
  ✅ 留在 C:\Users\Administrator\.ssh\ 下
  ❌ 不要用微信/QQ/邮件发给任何人
  ❌ 不要上传到 GitHub(GitHub 会自动扫描泄露的私钥)
  ❌ 不要复制到服务器上

它等于你的密码,只是比密码长一万倍,而且无法被暴力破解。

四、VS Code Remote-SSH 连接与 SSH 配置文件

为什么用 VS Code 而不是 Xshell

Xshell/Xftp 是传统的 SSH 客户端,需要额外安装。

VS Code Remote-SSH 的优势:
  ✅ 你已经在用 VS Code,不需要装新软件
  ✅ 终端 + 文件浏览 + 代码编辑在同一个窗口
  ✅ 支持 SSH 配置文件,用别名代替 IP
  ✅ 连接到服务器后,终端自动就是远程环境,不需切换

如何用 VS Code 连接服务器

方式一:命令面板
  1. Ctrl+Shift+P → 输入 "Remote-SSH: Connect to Host"
  2. 输入 renbudang@154.8.147.160
  3. 新窗口打开,左下角显示绿色 "SSH: 154.8.147.160"
  4. Ctrl+` 打开终端 → 自动是服务器上的终端

方式二:SSH 配置文件(推荐)
  1. Ctrl+Shift+P → "Remote-SSH: Open SSH Configuration File"
  2. 选第一个(C:\Users\Administrator\.ssh\config)
  3. 写入别名配置
  4. 以后连接时直接选别名即可

SSH 配置文件(~/.ssh/config)

路径:C:\Users\Administrator\.ssh\config

Host mycvm
    HostName 154.8.147.160
    User renbudang

各字段含义:

字段 含义 本例中的值
Host 别名,你自己起的名字,之后 ssh 别名 就能连 mycvm
HostName 服务器真实 IP 或域名 154.8.147.160
User 登录用户名 renbudang

如果是非默认端口(如 2222),加一行 Port 2222。本例用默认 22,不写也行。

为什么不叫 myvps

“VPS 是更宽广的概念,CVM 是腾讯云的现代化叫法。CVM 是 VPS 的子集。”

mycvm 更准确地描述了这台机器的实质——腾讯云轻量应用服务器,底层就是云虚拟机的现代化形态。当然名字只是个标签,叫什么都可以。

有了别名之后

场景 你只需要输入
VS Code 连接 Ctrl+Shift+P → 选 mycvm
PowerShell 直接 SSH ssh mycvm

IP 地址永远不用再记了。


五、总结:你现在拥有什么

一台云服务器:
  IP: 154.8.147.160
  配置: 2核 2G 3Mbps 40GB SSD
  系统: Ubuntu 22.04 LTS
  用户: renbudang(日常用)/ ubuntu(备用)

一套安全的登录方式:
  密钥算法: Ed25519
  私钥位置: C:\Users\Administrator\.ssh\id_ed25519
  登录方式: 密钥认证(密码登录已禁用)
  常用命令: ssh renbudang@154.8.147.160

一个即将开始的计划:
  下一步 → 装 Docker → 搭靶机 → 练渗透 → 考 CISP-PTE

本文是学习过程中的总结记录,后续每次重大操作都会以类似形式归档到 学习总结/ 目录下。