云服务器初始配置与 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
本文是学习过程中的总结记录,后续每次重大操作都会以类似形式归档到 学习总结/ 目录下。