# 2024-bg-217 接入 Linux 提示词

> 本文是一份可直接投喂给 AI agent 的提示词，用于在 Windows 设备 `2024-bg-217` 上配置到 Ubuntu 服务器的 SSH 公钥免密连接。

---

请在这台 Windows 设备 2024-bg-217 上配置到 Ubuntu 服务器的 SSH 公钥免密连接。

目标信息：

- 当前 Windows 预期用户名：huawei
- Ubuntu 服务器：zrh-dracarys
- 服务器 Tailscale IP：100.99.232.7
- Linux 用户名：zrh
- SSH 端口：22
- 服务器 ED25519 主机指纹：
  SHA256:1KPaatBGKwjQjQu5+5zTEcsCLUYZp5o3J8xkeXDd9so

已知这台设备以前使用过的公钥：

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDRS0NEHLQX+SgxU/n3scJoNOGLzzSkVNgtDGSnm6cd/ huawei@2024-BG-217

该公钥指纹：

SHA256:d6ZfgKmMikg5sDI4HMoax+hCJ8AzToIKaka0kcQsAeY

目标是连接时不输入 Linux 密码，也不重复输入私钥口令。

请按以下顺序操作。

一、确认设备与 Tailscale

1. 执行 whoami 和 hostname，确认当前设备确实是 2024-bg-217，当前用户应为 huawei。
2. 执行：
   tailscale status
   tailscale ping 100.99.232.7
3. 必须确认能收到 zrh-dracarys 的 pong。Tailscale 不通时停止，不要修改 SSH。

二、盘点现有密钥

1. 列出当前用户目录下的所有 .pub 文件：
   Get-ChildItem "$env:USERPROFILE\.ssh\*.pub" -File
2. 对每个 .pub 文件执行 ssh-keygen -lf，寻找指纹：
   SHA256:d6ZfgKmMikg5sDI4HMoax+hCJ8AzToIKaka0kcQsAeY
3. 如果找到匹配的 .pub，去掉 .pub 后缀，检查对应私钥是否存在。
4. 不要输出、读取或传输私钥内容。
5. 使用以下方式判断私钥是否为空口令：
   ssh-keygen -y -P "" -f "<私钥完整路径>" | ssh-keygen -lf -
6. 如果成功并输出相同指纹，复用这把私钥。
7. 如果私钥不存在，或者提示 incorrect passphrase，不要修改或移除旧密钥，转到第三步创建 Ubuntu 专用密钥。

三、仅在没有可复用的无口令私钥时创建新密钥

目标路径：

C:\Users\huawei\.ssh\id_ed25519_zrh

创建前必须检查该文件及其 .pub 是否存在。任何一个已存在都不要覆盖，停止并报告。

确认不存在后执行：

New-Item -ItemType Directory -Force "$env:USERPROFILE\.ssh" | Out-Null
ssh-keygen -t ed25519 -N "" -f "$env:USERPROFILE\.ssh\id_ed25519_zrh" -C "2024-bg-217-to-zrh"

记录新公钥完整内容和 SHA-256 指纹。只允许输出 .pub 公钥，不得输出没有 .pub 后缀的私钥。

如果创建了新密钥，先停止连接配置并报告：

- 新公钥完整一行
- 新公钥指纹
- 私钥路径

因为该新公钥还需要先加入 Linux 的 /home/zrh/.ssh/authorized_keys。

四、确认服务器主机指纹

连接前读取服务器 ED25519 主机指纹。只有与下面的值完全一致时才能接受：

SHA256:1KPaatBGKwjQjQu5+5zTEcsCLUYZp5o3J8xkeXDd9so

不一致时立即停止，不要绕过主机密钥检查。

五、测试登录

使用实际确认的私钥路径执行，必须显式限制为单一密钥：

ssh -F NUL -o IdentitiesOnly=yes -i "<实际私钥完整路径>" zrh@100.99.232.7 "id -un; hostname"

成功结果必须包含：

zrh
zrh-dracarys

如果返回 Permission denied (publickey)，不要修改 Windows sshd、Linux sshd、密码认证或防火墙。报告：

- 实际提交的公钥完整一行
- 公钥指纹
- 实际私钥路径
- ssh -vvv 的相关认证输出

六、配置 Windows OpenSSH 一键连接

只有第五步成功后才配置：

C:\Users\huawei\.ssh\config

保留所有已有内容，不要覆盖文件，不要修改其他 Host 块。若尚无 Host zrh-server，则追加：

Host zrh-server
    HostName 100.99.232.7
    User zrh
    Port 22
    IdentityFile ~/.ssh/<实际私钥文件名>
    IdentitiesOnly yes
    ServerAliveInterval 30
    ServerAliveCountMax 3

如果已经存在 Host zrh-server，只更新该块，不要重复添加。

执行：

ssh -G zrh-server

确认生效值中的 user、hostname、port、identityfile 和 identitiesonly 正确。然后测试：

ssh zrh-server "id -un; hostname"

七、限制操作范围

不要修改以下内容：

- C:\ProgramData\ssh\administrators_authorized_keys
- C:\ProgramData\ssh\sshd_config
- Windows sshd 服务
- Windows 防火墙
- Tailscale 配置或 ACL
- 现有旧私钥或旧公钥
- 其他 SSH Host 配置
- Linux 服务器上的任何文件

旧的 Windows sshd 配置是用于“其他设备登录 2024-bg-217”，与本次“2024-bg-217 登录 Ubuntu”方向相反。

完成后报告：

1. Tailscale 是否直连成功
2. 复用了旧密钥还是创建了新密钥
3. 实际公钥指纹
4. 实际私钥路径
5. 是否需要把新公钥加入 Linux
6. 显式 SSH 测试结果
7. ssh zrh-server 别名测试结果
8. 是否修改了 ~/.ssh/config，以及具体修改内容
