SSH Proxy Plus 是一个基于 Go 语言构建的企业级多层级 SSH 代理与隧道管理平台。它集成了四种核心转发模式,提供可视化配置界面,适用于复杂的网络穿透、安全访问和服务暴露场景,为企业网络架构提供灵活、安全的隧道解决方案。
- 智能拓扑编排:支持无限级 SSH 代理链,实现多层网络穿透与流量路由。
- 可视化拓扑管理:通过 Web 界面拖拽或配置"下一跳"关系,直观构建代理网络拓扑。
将远程服务端口安全映射至本地,实现内网服务透明访问。
- 适用场景:访问企业内部数据库、Web 服务、API 等。
- 典型用例:将远程 MySQL(3306)映射到本地
127.0.0.1:13306。 - 优势:客户端无需额外配置,直接使用本地连接。
将本地服务通过 SSH 隧道暴露至公网,实现内网穿透。
- 适用场景:临时公网演示、远程调试、本地开发环境暴露。
- 典型用例:将本地
localhost:8080通过跳板机暴露为公网可访问服务。 - 优势:无需公网 IP 或端口映射,快速实现服务外网访问。
创建 SOCKS5 代理隧道,实现全局流量加密转发。
- 适用场景:企业网络审计、跨区域访问、网络隔离环境下的安全通信。
- 典型用例:通过远程服务器建立 SOCKS5 代理访问企业内部资源。
- 优势:支持 HTTP/HTTPS/FTP 等多种协议,客户端配置简单。
基于 SSH SOCKS5 隧道封装的专用 HTTP/HTTPS 代理服务,提供更友好的 Web 访问体验。
- 适用场景:浏览器代理、Web 应用访问、企业内网 Web 资源访问。
- 典型用例:将 SOCKS5 代理转换为标准 HTTP 代理,方便浏览器和 Web 工具直接使用。
- 优势:兼容标准 HTTP 代理协议,无需额外 SOCKS5 客户端支持,支持连接复用与请求过滤。
| 场景 | 推荐模式 | 核心价值 |
|---|---|---|
| 远程办公 | 本地转发 + 代理链 | 安全、稳定访问企业内部服务 |
| 开发调试 | 远程转发 | 快速将本地服务暴露至公网供测试 |
| 安全通信 | 动态转发(SOCKS5) | 全流量加密、避免监听与劫持 |
| Web 访问代理 | HTTP 代理 | 浏览器友好、无需特殊客户端支持 |
| 多云/混合云 | 混合模式 + 多级代理链 | 跨云服务互联、统一访问入口 |
| 跨区域访问 | 代理链 + 动态转发 | 安全访问不同地理位置的内部资源 |
- 编译环境:Go 1.24+(后端)、Node.js 18+(前端)
- 运行环境:Linux / macOS / Windows(跨平台支持)
- 数据库:SQLite3(默认,支持其他关系型数据库)
- 依赖工具:Make(可选,用于自动化构建)
| 组件 | 技术选型 |
|---|---|
| 后端 | Go(标准库 ssh、net/http) |
| 前端 | TypeScript + Vite + Vue |
| 数据库 | SQLite(默认,支持 MySQL/PostgreSQL) |
| 构建工具 | Make + Go Build + npm |
cd frontend
npm install
npm run build前端构建输出目录默认为
dist/html,可在vite.config.ts中配置。
本项目提供完整的 Makefile 构建系统,支持多种架构和构建模式:
| 目标 | 说明 | 适用场景 |
|---|---|---|
make frontend |
仅构建前端资源 | 前端开发、快速测试 |
make build-arm |
构建 ARM 架构 Linux 版本 | ARM 服务器、嵌入式设备 |
make build-arm64 |
构建 ARM64 架构 Linux 版本 | ARM64 服务器、苹果 M 系列芯片 |
make build-amd64 |
构建 AMD64 架构 Linux 版本 | 标准 Linux 服务器 |
make build |
默认构建:前端 + AMD64 后端 | 标准生产环境构建 |
make build-*-dev |
开发版本构建(带 dev 标签) |
开发调试、功能测试 |
# 标准生产构建(前端 + AMD64 后端)
make build
# 特定架构构建
make build-arm64 # ARM64 架构
make build-arm # ARM 架构
# 开发版本构建
make build-amd64-dev # AMD64 开发版本
make build-arm64-dev # ARM64 开发版本
# 仅构建前端
make frontend- 版本号生成:自动从 Git 标签生成,可通过
TAG_PARTS参数调整 - 输出文件命名:
proxy-plus-{架构}[{编译模式}]-{版本号} - 输出目录:构建产物位于
./runtime/build/目录
# 使用三部分版本号
TAG_PARTS=3 make build-amd64
# 查看构建环境
make env# 如果不想使用 Makefile,也可以手动编译
go build -o ssh-proxy-plus cmd/main.go./ssh-proxy-plus -c conf.yaml- 浏览器打开:http://localhost:19009
- 功能包括:
- 创建 SSH 代理连接
- 配置代理链与转发规则
- 启动/停止代理、查看实时日志与连接状态
common:
cache: ./runtime/cache
heart_beat: 10s
ssh_timeout: 30s
enable_pass: false
enable_ali_ecs: true
log_ring_buffer_size: 1024
http_server:
listen_addr: :19009
router:
router:
default: "index.html"
root: ./dist/html
http_cache: false
http_cache_max_age: 25920000
session_id: "_ssh"
unauthorized_resp_method: 401
db:
db_type: sqlite
host:
- "proxy.db"
dbname: helay.blog
timeout: 10000
max_idle_conns: 1
max_open_conns: 1
session_config:
session_engine: db # memory, file, db
session_file_path: runtime/sessions
session:
cookie_name: "vsclub.ltd"
check_interval: "1h"
carrier: "cookie"
http_only: true| 主页概览 | 代理配置界面 |
|---|---|
![]() |
![]() |
本地 → 跳板机 A → 跳板机 B → 目标服务器(如数据库、内网应用)
将远程数据库(10.0.0.10:3306)安全映射至本地 localhost:13306,便于本地工具直接连接。
通过 SSH 隧道建立 SOCKS5 代理,并封装为 HTTP 代理,为企业员工提供统一、安全的 Web 访问入口。
- 使用 systemd、supervisord 或 Docker 进行进程守护与自动重启。
- 若服务监听非
localhost,请配置防火墙规则,限制访问来源。
- 版本管理:建议每次发布前创建 Git 标签,确保版本号正确生成
- 构建缓存:构建产物位于
./runtime/build/目录,可定期清理 - 多架构支持:支持 x86_64、ARM64、ARM 等多种 CPU 架构
- 启动后请查看服务日志,确认代理连接状态。
- 支持日志环形缓冲区,避免日志文件无限制增长。
- 目前仅支持 TCP 协议转发,UDP 暂不支持。
- 代理链过长可能增加延迟,建议根据实际网络拓扑优化层级。
- HTTP 代理功能基于 SOCKS5 隧道封装,性能可能略低于原生 HTTP 代理。
我们欢迎任何形式的贡献,包括但不限于:
- 提交 Issue:请提供复现步骤、环境信息及相关日志。
- 提交 Pull Request:
- Fork 本仓库。
- 基于
main分支创建功能分支:git checkout -b feat/your-feature。 - 遵循 Go 代码规范(运行
go fmt、go vet),补充相应测试。 - 提交 PR 并详细描述变更内容、测试情况及兼容性影响。
- 文档与示例:欢迎补充部署示例(Docker Compose、K8s YAML)、Web UI 使用指南等。
© helays, 2024–present
本项目基于 MIT License 开源。

