ssh-channels-hub 0.2.0

A CLI tool for managing SSH port forwarding tunnels with auto-reconnect
Documentation
# SSH Channels Hub 设计文档

欢迎阅读 SSH Channels Hub 的设计文档。本文档提供了项目的详细设计说明。

## 文档索引

1. **[使用教程]./HowToUse.md** - 用户使用指南
   - 端口转发(SSH 隧道)使用指南
   - 常见使用场景和配置示例
   - 故障排查指南
   - 最佳实践

2. **[配置文档]./configuration.md** - 配置参考
   - 配置文件格式说明
   - 配置项详解
   - 配置示例
   - 最佳实践和故障排查

3. **[架构设计文档]./architecture.md** - 系统架构
   - 系统整体架构
   - 核心组件说明
   - 数据流和并发模型
   - 扩展性设计
   - 安全性和性能考虑

4. **[模块设计文档]./modules.md** - 模块设计
   - 各模块详细说明
   - 模块接口设计
   - 模块间依赖关系
   - 扩展点和测试策略

5. **[工作流程文档]./workflow.md** - 工作流程
   - 应用程序启动流程
   - SSH 连接建立流程
   - 重连流程
   - 关闭和错误处理流程

## 快速开始

### 阅读顺序建议

1. **新用户**:
   - 先阅读 [使用教程]./HowToUse.md 快速上手
   - 然后阅读 [配置文档]./configuration.md 了解详细配置
   - 最后阅读 [工作流程文档]./workflow.md 了解工作原理

2. **开发者**:
   - 先阅读 [架构设计文档]./architecture.md 了解整体设计
   - 然后阅读 [模块设计文档]./modules.md 了解实现细节
   - 参考 [使用教程]./HowToUse.md 了解用户场景

3. **贡献者**:
   - 阅读所有文档
   - 重点关注扩展性设计和测试策略

## 项目概述

SSH Channels Hub 是一个用于管理和维护多个 SSH channels 的 CLI 应用程序。它通过配置文件定义需要建立的 SSH 连接,自动管理连接生命周期,并在连接断开时自动重连。

### 核心特性

- ✅ 多 channels 管理:同时管理多个 SSH 连接和 channels
- ✅ 自动重连:连接断开时自动重连,支持多种重试策略
- ✅ 灵活配置:支持 TOML 格式配置文件
- ✅ 多种认证:支持密码、密钥认证
- ✅ 端口转发:支持 Direct-TCPIP(端口转发)
- ✅ 结构化日志:使用 tracing 进行详细日志记录

### 技术栈

- **语言**: Rust
- **异步运行时**: Tokio
- **SSH 库**: russh
- **CLI**: clap
- **配置**: TOML (serde)
- **日志**: tracing + tracing-subscriber
- **重试**: backon
- **错误处理**: anyhow + thiserror

## 架构概览

```text
┌─────────────────┐
│   CLI Layer     │  ← 用户接口
└────────┬────────┘
┌────────▼────────┐
│ Service Layer   │  ← 服务管理
└────────┬────────┘
┌────────▼────────┐
│  SSH Layer      │  ← SSH 连接管理
└─────────────────┘
```

## 设计原则

1. **模块化**: 清晰的模块划分,单一职责原则
2. **异步优先**: 所有 I/O 操作都是异步的
3. **错误处理**: 统一的错误类型和处理策略
4. **可扩展性**: 易于添加新功能(channel 类型、认证方式等)
5. **可观测性**: 详细的日志记录和状态监控

## 文档更新

文档会随着项目的发展而更新。如果发现文档与代码不一致,请:

1. 提交 Issue 报告问题
2. 或提交 PR 更新文档

## 相关资源

- [项目 README]../README.md
- [AGENTS.md]../AGENTS.md - 开发指南
- [配置示例]../configs/config.example.toml

## 贡献指南

在贡献代码之前,请:

1. 阅读所有设计文档
2. 理解项目的架构和设计原则
3. 遵循 [AGENTS.md]../AGENTS.md 中的编码规范
4. 确保新功能有相应的文档更新

## 许可证

[根据项目许可证]