制作自己的私人安装包
公开包包含工具与教程,不包含发布者或使用者的凭据。下面操作只在制作者自己的可信电脑上执行,输出只能给自己信任的安装者/机器。它不修改源目录、源 Key 或源客户端配置。
制作与导入私人配置脚本需要 Python 3.11 或更新版本,只使用标准库;SSHMCP 原生程序运行本身不需要 Python。先执行 python3 --version(Windows 通常为 py -3 --version)。先在公开包根目录校验 SHA256SUMS,再执行脚本。
A. 有中心:预置中心地址与接入 Key
前置:自己的中心已正常运行,本机已完成一次真实接入,拥有原生安装器保存的私密 connection.json。默认 Linux 为 ~/.sshmcp/connection.json,Windows 为 %USERPROFILE%\.sshmcp\connection.json。不需要复制中心的 SSH 私钥或数据库。
Linux:
python3 tools/make-private-bundle.py --mode center \
--profile "$HOME/.sshmcp/connection.json" \
--output "$HOME/.sshmcp-private-packages/sshmcp-center-private.zip"
Windows PowerShell:
py -3 tools/make-private-bundle.py --mode center `
--profile "$env:USERPROFILE\.sshmcp\connection.json" `
--output "$env:USERPROFILE\.sshmcp-private-packages\sshmcp-center-private.zip"
脚本校验公开包,读取指定 profile,生成同时含 Linux/Windows 程序和 AI 入口的私人包,只额外保存 private/ENDPOINT 与 private/API_KEY。它不会下载服务器目录或把节点 SSH 私钥打进包。
新机 AI 沿用已给出的安装方式和客户端,缺失时才询问;已选择接入中心后,原生安装器通过 --key-file 消费包内 Key,不需要让安装者再次输入 Key。安装期间仍需要中心可达。中心 Key 代表整个目录所有者权限;该包适用于自己的可信机器,不是多用户权限隔离方案。
B. 无中心:携带自己的服务器目录
默认只复制明确指定的 SSHMCP TOML 目录,不扫描用户目录,不自动复制 SSH 私钥:
python3 tools/make-private-bundle.py --mode standalone \
--catalog /absolute/private/ssh-config.toml \
--output "$HOME/.sshmcp-private-packages/sshmcp-standalone-private.zip"
Windows 使用 py -3,并把路径换成实际 Windows 路径。目录里的 password/passphrase 等字段如果存在,会随这个私人包保存;“不自动复制私钥文件”不表示输出不含其他密码。因此所有 standalone 私人包都按含凭据处理。
如明确需要把目录引用的私钥一起迁移,可加 --include-ssh-keys:
python3 tools/make-private-bundle.py --mode standalone \
--catalog /absolute/private/ssh-config.toml --include-ssh-keys \
--output "$HOME/.sshmcp-private-packages/sshmcp-standalone-with-keys.zip"
只读取此目录中 key_path/keypath/ssh_key 引用的文件,不遍历 ~/.ssh。引用路径须为绝对路径或 ~ 路径;文件按内容指纹去重,目录中改为可移植占位路径。源 TOML 不改。SSH agent 身份不能导出;相对密钥路径、冲突别名或不支持的目录格式会拒绝,先修正自己的明确输入后重新制作。
新机 AI 沿用已明确的独立模式和客户端;缺失时先询问。先运行包内 import-private-config.py 导入到新的私密目录,替换占位密钥路径,再向平台安装器传入返回的 catalog/env_file 和所选客户端。工具拒绝覆盖既有目标。未包含私钥时必须检查新机自己的密钥/agent;仅复制目录不等于 SSH 已能登录。
保存、传送与验收
输出目录新建时设置为当前用户私有:Linux 0700,ZIP 0600;Windows 限当前用户、SYSTEM 和管理员。已有输出目录权限过宽会拒绝,不会擅自改其他目录 ACL。每次使用新的 ZIP 文件名,脚本拒绝覆盖旧包。普通 ZIP 没有加密,文件权限不是传输加密;通过你信任的私密通道传送,不上传公开下载站点或源码仓库。
脚本仅输出成功状态、模式、路径和 SHA-256,不能把 Key/密码放进命令行值。生成后先在隔离目录核对成员和校验和,再在受信任机器完成实际安装与一个选定目标的只读验证。故障时保留安装器备份,不清理源 Key。重做私人包时从原公开包重新开始,避免把旧私人包再次嵌套进去。
有中心时,用户撤销/轮换接入 Key 后应重新制作私人包,并更新自己的客户端 profile;旧运行实例的目录/连接可能仍驻留内存,需要正常退出相应实例才能完全释放。无中心时,停止客户端并删除明确选择的本机目录/私钥才会移除持久化副本;不要把“删除压缩包”当成清除已安装凭据。