feat(host): add guarded Debian baseline and SSH transactions

This commit is contained in:
kaka
2026-11-04 16:55:00 +08:00
parent 62ef4b458c
commit 873933af35
6 changed files with 471 additions and 12 deletions

View File

@@ -31,6 +31,18 @@ Docker、Headscale、公钥注入和安全配置后续由 Komodo 任务处理。
`host-init.sh` 先检查基础包安装状态,仅在缺包时更新 APT 索引并补齐缺失包;已有完整基线的重跑不会无条件访问软件源。Docker 固定包仍须在执行前准备,构建与资源导入单独计时。
## 全服务器主机基线
`host-init.sh` 仅准备前置条件,不能作为完整主机基线验收。`--without-docker` 允许无容器角色只安装通用工具;不指定时沿用既有 Docker 契约。安装材料使用 root 受限的 `/var/tmp/platform-bootstrap/<批次>/`,不堆放 `/root`。
`host-baseline.sh --check --hostname NAME --release FULL_COMMIT` 输出逐项 JSON,本机差异返回 2。检查包括网络参数及持久配置、SSH、确认回执、防火墙、时钟同步、失败服务和待重启状态,另输出实际网卡队列、磁盘和安装残留信息;不等同于完整外部网络/存储/业务验收。
`--preflight` 检查内核模块与未知本地 sysctl 冲突;`--apply-network` 备份后仅设置 BBR 和默认 fq,失败恢复原值。不会替换活动 qdisc、清空未知配置或批量调整 conntrack/超时/内存。已有自定义文件必须先审查,不静默覆盖。
`ssh-access.sh --stage --hostname NAME --release FULL_COMMIT --key-sha256 SHA --firewall-sha256 SHA` 使用已由管理端验证的 root authorized_keys 摘要和目标防火墙渲染摘要,设置 61789、公钥认证和 root prohibit-password。仅用于已有确认防火墙的首次 SSH 标准化;复杂显式端口/Match/socket activation、自定义服务命令或环境停止并单独维护。先安排 240 秒回退及重启恢复,再修改配置;随后应用目标防火墙,apply/confirm 均传 `--ssh-transaction TRANSACTION`。从新 61789 SSH transport 先确认防火墙、再执行 SSH `--confirm --sha256 TRANSACTION`;配置输入、目标规则和实际规则必须与事务匹配。共享私钥不上传目标机。完整 Komodo 编排、外部确认入口、推广门禁与未实现项目见 platform 的 `docs/host-baseline.md`。
新增主机基线入口尚需真实 Debian 的 SSH/防火墙联合回退、重启恢复和完整验收;历史 Periphery 接入证据不能替代新入口的实机测试。
## Headscale 接入
`tailscale.sh` 使用显式版本、已准备的本地 DEB、SHA-256、HTTPS 控制端和节点名称。首次接入还需 root 所有、0600 权限的短期单次授权 key 文件;执行后清除临时 key 文件。既有 Running 节点直接复核身份,不需要新 key。
@@ -64,7 +76,7 @@ resume/verify 可使用同一固定版本 URL 再次下载执行,或保存该
## 发布
Caddy 同时提供 /install.sh 稳定入口与 /releases/<40位小写Git提交>/install.sh 固定版本入口;生产接入命令固定使用后者。
发布脚本只提取 `install.sh`、`upgrade-debian12-13.sh`、`host-init.sh`、`tailscale.sh`、`firewall.sh`、README、artifacts.lock 及清单列出的 vendor 文件,生成 VERSION、SHA256SUMS;不暴露 .git 或工作区其他文件。
发布脚本只提取 `install.sh`、`upgrade-debian12-13.sh`、`host-init.sh`、`host-baseline.sh`、`ssh-access.sh`、`tailscale.sh`、`firewall.sh`、README、artifacts.lock 及清单列出的 vendor 文件,生成 VERSION、SHA256SUMS;不暴露 .git 或工作区其他文件。新入口按提交中是否存在纳入清单,历史不可变 release 仍可核验。
源代码与修复就在此仓库维护,无生成器、内嵌 Python 或第二份安装源码。
## 固定资源