🗺️ 操作教程总览

1 购买服务器 2 安装 Kimi 3 SSH 免密 4 安装 Clash 5 安装 Claude 6 部署 OpenClaw

1. 理解 SSH 免密登录原理

SSH 密钥对由两把密钥组成,它们是一对数学上相关联的字符串:

连接时,SSH 客户端用私钥对一段随机数据签名,服务器用公钥验证签名。验证通过即认证成功,全程无需在网络上传输密码或密钥。

💡
为什么用密钥而不是密码?
  • 更安全:密码可能被暴力破解,而 256 位 Ed25519 密钥的破解在计算上不可行
  • 更便捷:登录无需输入密码,适合频繁连接和自动化脚本
  • 可控制:私钥可以设置 passphrase 二次保护,也可以随时撤销(删除服务器上的公钥)

2. 生成 SSH 密钥对

本地电脑上执行以下命令,生成一对新的 SSH 密钥。我们使用 Ed25519 算法,它在安全性和密钥长度上都有优势。

💻 macOS 本地 Terminal
# 1. 确保 .ssh 目录存在
mkdir -p ~/.ssh
chmod 700 ~/.ssh

# 2. 生成 Ed25519 密钥对
# -t 指定算法类型
# -C 是注释(Comment),会附加在公钥末尾,仅用于标识这把密钥是谁的
#   → 可以写邮箱、名字、日期,甚至任意文字;不写也完全不影响功能
# -f 指定保存路径(避免覆盖默认的 id_ed25519)
ssh-keygen -t ed25519 -C "your-email@example.com" -f ~/.ssh/id_ed25519_openclaw

# 3. 按提示操作
# Enter passphrase (empty for no passphrase): 
# → 直接回车留空(初学者建议不设 passphrase,后续可用 ssh-agent 管理)
# Enter same passphrase again:
# → 再次回车

# 4. 确认生成成功
ls -la ~/.ssh/id_ed25519_openclaw*
# 应该看到两个文件:
# id_ed25519_openclaw     ← 私钥(保密!)
# id_ed25519_openclaw.pub ← 公钥(可以分享)
🪟 Windows 本地 PowerShell
# 1. 确保 .ssh 目录存在
New-Item -ItemType Directory -Force -Path $env:USERPROFILE\.ssh

# 2. 生成 Ed25519 密钥对
ssh-keygen -t ed25519 -C "your-email@example.com" -f $env:USERPROFILE\.ssh\id_ed25519_openclaw

# 3. 按提示操作
# Enter passphrase (empty for no passphrase): 
# → 直接回车留空
# Enter same passphrase again:
# → 再次回车

# 4. 确认生成成功
Get-ChildItem $env:USERPROFILE\.ssh\id_ed25519_openclaw*
# 应该看到两个文件:
# id_ed25519_openclaw     ← 私钥(保密!)
# id_ed25519_openclaw.pub ← 公钥(可以分享)
📝
关于 passphrase

passphrase 是对私钥文件的二次加密。设置后,即使私钥文件被盗,没有 passphrase 也无法使用。但每次 SSH 连接都需要输入 passphrase。初学者建议留空,熟练后再用 ssh-agent 管理。

3. 查看并复制公钥内容

公钥需要上传到服务器的 ~/.ssh/authorized_keys 文件中。先查看公钥内容。

💻 macOS 本地 Terminal
# 查看公钥内容
 cat ~/.ssh/id_ed25519_openclaw.pub

# 输出示例:
# ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDIhz2GK/XCUj4i6Q5yQJNL1MXMY0RxzPV2QrBqfHrDq your-email@example.com

# 将公钥复制到剪贴板(后续粘贴用)
pbcopy < ~/.ssh/id_ed25519_openclaw.pub

# 确认复制成功:在任意文本编辑器中按 Cmd+V 应该能粘贴出公钥内容
🪟 Windows 本地 PowerShell
# 查看公钥内容
Get-Content $env:USERPROFILE\.ssh\id_ed25519_openclaw.pub

# 输出示例:
# ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDIhz2GK/XCUj4i6Q5yQJNL1MXMY0RxzPV2QrBqfHrDq your-email@example.com

# 将公钥复制到剪贴板
Get-Content $env:USERPROFILE\.ssh\id_ed25519_openclaw.pub | Set-Clipboard

# 确认复制成功:在记事本中按 Ctrl+V 应该能粘贴出公钥内容

4. 登录服务器并创建 authorized_keys

使用密码登录服务器(最后一次输入密码),创建 .ssh 目录和 authorized_keys 文件。

🖥️ 服务器(Ubuntu) SSH 会话
# 1. 用密码登录服务器(将 YOUR_SERVER_IP 替换为你的公网 IP)
ssh root@YOUR_SERVER_IP

# 2. 输入密码(你在 Step 1 设置的 root 密码)
# 登录成功后,提示符变为:root@VM-xx-ubuntu:~#

# 3. 创建 .ssh 目录并设置正确权限
mkdir -p ~/.ssh
chmod 700 ~/.ssh

# 4. 创建 authorized_keys 文件
# 方法 A:使用 echo 直接写入(将引号中的内容替换为你的真实公钥)
echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... your-email@example.com" > ~/.ssh/authorized_keys

# 方法 B:如果公钥已在剪贴板,先用 vim/nano 编辑
nano ~/.ssh/authorized_keys
# 粘贴公钥内容,按 Ctrl+O 保存,Ctrl+X 退出

# 5. 设置 authorized_keys 的权限(至关重要!)
chmod 600 ~/.ssh/authorized_keys

# 6. 验证文件内容
cat ~/.ssh/authorized_keys
# 应该能看到以 ssh-ed25519 开头的公钥内容

# 7. 退出服务器
exit
🚨
权限必须正确!

~/.ssh 目录必须是 700(只有所有者可读写执行),authorized_keys 必须是 600(只有所有者可读写)。如果权限不对,SSH 会拒绝使用密钥认证,这是安全设计。

5. 验证免密登录

断开连接后重新登录,这次应该不需要输入密码。

💻 macOS 本地 Terminal
# 方法 A:指定私钥文件连接
ssh -i ~/.ssh/id_ed25519_openclaw root@YOUR_SERVER_IP

# 方法 B:如果你创建了默认密钥(id_ed25519 或 id_rsa),直接连接
ssh root@YOUR_SERVER_IP

# 成功标志:没有提示输入密码,直接看到服务器欢迎信息
Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0 x86_64)
root@VM-0-12-ubuntu:~# 

# 如果仍然提示密码,检查:
# 1. authorized_keys 中的公钥是否完整(没有截断)
# 2. ~/.ssh 权限是否为 700,authorized_keys 是否为 600
# 3. 服务器 /var/log/auth.log 中的错误信息
🪟 Windows 本地 PowerShell
# 方法 A:指定私钥文件连接
ssh -i $env:USERPROFILE\.ssh\id_ed25519_openclaw root@YOUR_SERVER_IP

# 方法 B:如果你创建了默认密钥,直接连接
ssh root@YOUR_SERVER_IP

# 成功标志:没有提示输入密码,直接看到服务器欢迎信息
Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0 x86_64)
root@VM-0-12-ubuntu:~# 

# 如果仍然提示密码,检查:
# 1. authorized_keys 中的公钥是否完整
# 2. ~/.ssh 权限是否为 700,authorized_keys 是否为 600
# 3. PowerShell 中 ssh 的 verbose 输出:ssh -vv root@YOUR_SERVER_IP

6. 配置 SSH 别名(简化连接)

每次输入 ssh -i ~/.ssh/... root@xxx.xxx.xxx.xxx 很麻烦。配置 SSH 别名后,只需 ssh myserver 即可连接。

💻 macOS 本地 ~/.ssh/config
# 1. 创建或编辑 SSH 配置文件
nano ~/.ssh/config

# 2. 添加以下内容(将 YOUR_SERVER_IP 替换为实际 IP)
Host myserver
    HostName YOUR_SERVER_IP
    User root
    IdentityFile ~/.ssh/id_ed25519_openclaw
    IdentitiesOnly yes
    StrictHostKeyChecking accept-new

# 3. 保存并设置权限(SSH 要求 config 文件权限为 600)
chmod 600 ~/.ssh/config

# 4. 现在只需一行命令即可连接
ssh myserver

# 5. 验证:你应该直接登录,无需输入 IP、用户名、密码
🪟 Windows 本地 %USERPROFILE%\.ssh\config
# 1. 创建或编辑 SSH 配置文件
notepad $env:USERPROFILE\.ssh\config

# 2. 添加以下内容
Host myserver
    HostName YOUR_SERVER_IP
    User root
    IdentityFile C:\Users\你的用户名\.ssh\id_ed25519_openclaw
    IdentitiesOnly yes
    StrictHostKeyChecking accept-new

# 3. 保存

# 4. 现在只需一行命令即可连接
ssh myserver

# 5. 验证:你应该直接登录,无需输入 IP、用户名、密码
💡
配置项说明
  • Host myserver:别名,可以自定义(如 openclaw、tx 等)
  • HostName:服务器的真实 IP 地址
  • User:登录用户名(root)
  • IdentityFile:私钥文件路径
  • IdentitiesOnly yes:只使用指定的密钥,不尝试其他密钥

7. 用 Kimi Code 辅助管理 SSH

既然你已经安装了 Kimi Code(Step 2),现在可以用它来帮助管理 SSH 配置、排查连接问题。

💻 本地终端 Kimi Code
# 启动 Kimi Code
kimi

# 然后输入以下提示词,让 Kimi 帮你生成或检查 SSH 配置:

"帮我检查 ~/.ssh/config 的配置是否正确,Host 别名是 myserver,IP 是 123.45.67.89"

"生成一个 shell 脚本,自动备份 ~/.ssh 目录到 ~/backups/ssh-backup-日期.tar.gz"

"解释 ssh -i、ssh-copy-id、authorized_keys 的作用和区别"

"我的 ssh myserver 还是提示输入密码,帮我排查可能的原因并给出检查步骤"
🎉
Vibe Coding 实践

从现在起,遇到任何命令行问题,都可以先问 Kimi:"我想做 XXX,应该用什么命令?" Kimi 会给出具体命令和解释。这是 Vibe Coding 的核心——用自然语言描述意图,让 AI 生成实现。

8. 服务器安全加固(可选但推荐)

确认免密登录完全正常后,建议关闭密码登录,仅允许密钥认证,进一步提升安全性。

🖥️ 服务器(Ubuntu) SSH 会话
# 1. 登录服务器
ssh myserver

# 2. 备份原配置文件
 cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%Y%m%d)

# 3. 编辑 SSH 服务配置
nano /etc/ssh/sshd_config

# 4. 找到并修改以下行(如果没有则添加在文件末尾)
PermitRootLogin prohibit-password    # 禁止 root 密码登录
PasswordAuthentication no            # 关闭密码认证
PubkeyAuthentication yes             # 启用公钥认证(默认已启用)

# 5. 保存退出(Ctrl+O,回车,Ctrl+X)

# 6. 检查配置语法(重要!)
 sshd -t
# 如果没有任何输出,说明语法正确

# 7. 重启 SSH 服务使配置生效
systemctl restart sshd

# 8. 不要退出当前会话!打开一个新的本地终端窗口,测试:
# ssh myserver
# 如果能正常登录,说明配置成功
# 如果失败,用当前会话改回配置
🚨
关键安全提醒

在关闭密码登录之前,请务必:

  1. 已经成功用密钥登录过至少一次
  2. 私钥文件已备份到安全位置(如密码管理器、U盘)
  3. 腾讯云控制台提供VNC 救援登录(即使 SSH 完全搞错也能通过网页修复)
  4. 修改配置后不要退出当前 SSH 会话,先新开窗口验证
← 上一步
Step 2: 安装 Kimi Code