Files
leefer 21cc1e7d04 CLI 视觉升级:tui.py 真彩色界面
- 配色与 GUI 同源(石墨底/青绿点缀),支持 NO_COLOR 与非 tty 自动降级纯文本
- 向导:对齐横幅、❯ 方向键选择菜单(↑↓/数字/回车,q 取消),彩色表单提示
- 隧道运行时实时面板:状态·运行时长·累计连接·滚动日志,原地刷新
- Ctrl+C 退出时面板干净收起;非交互终端自动退化为编号选择
2026-09-27 20:40:41 +08:00

76 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SSH 隧道管理器
跨平台 SSH 本地端口转发工具:Windows 图形界面,Linux/macOS 命令行。
## 一键安装
**Windows**(图形界面,自动装好依赖、建快捷方式并启动):
```powershell
powershell -c "irm https://gitea.xbay.cc/leefer/ssh-e2e/raw/branch/main/install.ps1 | iex"
```
**Linux / macOS**(命令行版,安装到 `~/ssh-e2e`,提供 `ssh-tunnel` 命令):
```bash
curl -fsSL https://gitea.xbay.cc/leefer/ssh-e2e/raw/branch/main/install.sh | bash
```
安装完成会**自动进入中文配置向导**:按提示输入 SSH 地址、密码、远程端口等
(直接回车采用方括号里的默认值),填完隧道立即建立,Ctrl+C 断开。
命令行界面支持真彩色(自动适配终端,`NO_COLOR` 关闭):方向键 `❯` 选择菜单、
隧道运行时的实时状态面板(连接状态 · 运行时长 · 累计连接 · 滚动日志)。
## 典型场景
远程主机上有个服务只监听它自己的 `127.0.0.1:3000`,公网访问不到。
建一条隧道后,在本机打开 `http://127.0.0.1:3000` 即可直接访问该服务。
## 命令行用法(Linux/macOS,Windows 亦可 `python cli.py`)
```bash
ssh-tunnel # 交互向导:选已有主机/隧道或新建,建好直接运行
ssh-tunnel start web # 直接启动某条已配置的隧道(前台,Ctrl+C 断开)
ssh-tunnel list # 查看全部
ssh-tunnel test 我的服务器 # 测试主机认证
ssh-tunnel remove tunnel web
ssh-tunnel --help # 完整参数(host add / tunnel add 等)
```
## 图形界面(Windows)
双击仓库里的 **`启动.bat`**,或用上面的一键安装命令。
1. **主机**:添加 SSH 主机(密码/私钥认证,可「测试连接」)。
2. **隧道**:选主机,填远程地址(一般 `127.0.0.1`)、远程端口、本地端口,点「启动」。
3. 本机访问 `127.0.0.1:本地端口` 即等于远程服务;点「最小化/关闭」驻留系统托盘,隧道后台保持。
## 数据与安全
配置文件位置:Windows `%APPDATA%\SshTunnelManager\`、Linux `~/ssh-e2e/.config/`、
macOS `~/ssh-e2e/Library/`。密码与私钥口令:Windows 经 DPAPI 加密(绑定系统用户);
Linux/macOS 以明文保存,但文件权限已收紧为仅本用户可读(600),与 `~/.ssh/` 私钥同级。
主机公钥记录在配置目录 `known_hosts`,主机密钥变更时拒绝连接。
## 开发
```
main.py GUI 入口(pywebview + WebView2,仅 Windows)
cli.py 命令行入口(跨平台)
engine.py 隧道引擎:paramiko 转发、保活、自动重连
storage.py 配置存储:JSON + 平台加密
ui/ 图形界面(HTML/CSS/JS)
install.sh / install.ps1 一键安装脚本
test_sshd.py / test_e2e.py 本地自测(见下)
```
自测:
```bash
.venv/Scripts/python test_sshd.py # 窗口1:本地测试 SSH 服务端
.venv/Scripts/python test_e2e.py # 窗口2:端到端隧道验证
.venv/Scripts/python cli.py list # CLI 冒烟
```