fleetsh / 文档

架构

命令行层负责参数和呈现。各包分别负责主机清单、凭据、传输、执行和内置动作。

路径 职责
cmd/fleetsh/ 入口、版本、响应中断并取消
internal/cli/ Cobra 命令、交互提示、JSON 和终端输出
internal/config/ 独占创建初始配置
internal/inventory/ 严格解析 TOML、校验、选择器、带锁原子保存
internal/credentials/ 系统凭据库、隐藏输入、已知凭据脱敏
internal/transport/ SSH 认证、Agent、跳板、SOCKS5/HTTP/HTTPS 代理、主机密钥、保活
internal/executor/ 工作池、超时、输出限制、PTY、sudo
internal/actions/ Linux 资源快照、系统更新、重启验证
internal/forwarding/ 本地/远程/动态隧道、连接数限制与取消清理
internal/testutil/ 本地 SSH、Agent 和代理测试环境
docs/ Jekyll 文档源码,通过 gh-pages 发布

连接生命周期

在并发工作前解析凭据和 Agent 密钥,避免交互提示交错。 每个目标拥有独立的 SSH 客户端和跳板链。 所有网络操作都支持取消,并受连接超时限制。 未知主机密钥需要确认;变化的密钥会被拒绝。 每 15 秒发送保活探测,无响应时关闭连接。

连接后启动独立的命令超时。取消时关闭 SSH 客户端, 保留标准输出、标准错误和远程退出状态。 每个输出流最多保留 4 MiB,并标记截断。 工作池限制同时进行的目标操作;排序后的清单选择结果保证输出顺序稳定。

状态修改

进程级协作文件锁保护遵守锁协议的清单写入。 校验后的 TOML 写入私有临时文件,同步后重命名。 命令行编辑会重写注释。主机密钥信任使用独立锁, 并在确认后重新校验身份,处理并发写入。

执行任何更新前,先探测全部可执行目标。 重启记录原启动标识,发送重启命令后重新连接, 直到确认启动标识变化且健康探测成功。

退出状态

混合远程结果中,1 优先于 3。交互 shell 非零退出返回 1。 不会自动重试命令。

依赖与验证

Cobra、go-toml/v2、x/crypto/ssh、x/net/proxy、x/term、 go-keyring、go-winio 和 flock 固定在 go.mod/go.sum 中。 核心 SSH 不调用 OpenSSH 可执行文件。 macOS Keychain 使用系统 security 工具,通过标准输入传送凭据; Linux 使用 Secret Service 和 D-Bus。

测试覆盖本地 SSH 服务、加密密钥、Unix 套接字和 Windows Agent 管道、 严格信任、目标与跳板身份、认证代理、超时、sudo 输入、并发限制、 输出限制、更新确认和重启身份。

持续集成运行竞态检测,并构建六种不依赖 CGO 的目标。 原生凭据集成测试使用隔离系统凭据库中的临时测试条目。