# 私人包：先询问安装方式，再安装

此包含制作者明确选择的私密资料。禁止上传公开站点、Git、第三方分析服务或打印 private/ 中的内容。只可读取 PRIVATE_SETUP.json 的非秘密元数据了解 prepared_mode，不能从中推定安装者的选择。

**执行安装前必须询问：**“你要独立本机使用、接入已有中心，还是部署自己的中心？要接入哪个或哪些客户端？”如果安装者已经明确答复，则复述沿用。收到答案之前只允许检查平台、包摘要和元数据。

Windows 的中心连接器使用修复后的 5.1.1；仍需按 docs/KNOWN_ISSUES.md 在安装者自己的 Codex 中重启/刷新并调用工具验收。私人包继承公开包的原生版本，不单独替换二进制。

prepared_mode 表示制作时预置的资料类型，不是替安装者作决定。选择与预置类型不同时，跳过所有不匹配的私密资料，按 PUBLIC_START_HERE.md 的相应公开流程操作，不能把中心 Key 当作本机 SSH 密码。

## 选择接入中心，且 prepared_mode=center

private/ENDPOINT 是预设中心地址，可以读取地址但不要读取 API_KEY 内容。在当前平台用包内主程序运行以下形式（路径换成实际绝对路径、客户端换成安装者的选择）：

```text
linux-x86_64/mcp-ssh-manager install --endpoint <private/ENDPOINT 中的地址> --key-file <private/API_KEY 的绝对路径> --clients codex
windows-x86_64/mcp-ssh-manager.exe install --endpoint <private/ENDPOINT 中的地址> --key-file <private/API_KEY 的绝对路径> --clients codex
```

这是免输入 Key 的原生安装，Key 由程序读取受限文件，不写入命令参数值或 AI 输出。原生安装器完成中心连接、版本安装、配置备份、选定客户端接入和实际 MCP 验证。检查 success、central、shared_pool、memory_only，再提醒/执行客户端正常重载。仅当用户选择所有已安装客户端时使用 --clients auto。

## 选择独立本机，且 prepared_mode=standalone

1. 按 docs/INSTALL.md 运行当前平台安装脚本。
2. 在收到安装选择后，用 Python 3.11+ 运行 `python tools/import-private-config.py --destination <一个新的用户私密目录>`。工具校验全部成员、创建受限目录、导入目录及明确包含的私钥、自动替换可移植密钥路径；只输出文件位置，不打印秘密。已有目标目录会拒绝，必须另选新目录或由安装者决定如何合并，不能覆盖原配置。
3. 把导入输出的 catalog/env_file 绝对路径用于所选客户端的 SSH_CONFIG_PATH、SSH_ENV_PATH。密钥未包含时，先确认新机自己的密钥/agent可用；旧机绝对路径不能原样当成新机可用路径。proxy_command、default_dir、audit_log、platform 等机器相关设置仍需按新机实际情况核对。
4. 新实例 discovery 和目录可见后，仅对用户选定目标做只读 SSH 验证。不要遍历登录所有节点。

独立模式会在本机持久化自己的目录及明确导入的密钥；集中连接器下发的 SSH 凭据才采用仅内存策略。无论哪种私人 ZIP 都是含秘密的普通 ZIP，并非加密容器。保存原 ZIP 和私密配置；清理解压目录前确认程序、配置和所有导入密钥已经放入稳定目录，当前客户端已正常重载。
