leefer 27a3b4c6a8 SSH 隧道管理器:pywebview+paramiko 桌面应用
- 本地端口转发隧道管理(密码/私钥认证,自动重连,随应用启动)
- 主机与隧道可视化配置,DPAPI 加密存储机密,known_hosts 校验
- 自定义无边框窗口,深色界面,托盘驻留(最小化/关闭到托盘)
- 内置本地测试 SSH 服务端与端到端自测脚本
2026-09-24 17:14:59 +08:00

SSH 隧道管理器

Windows 桌面小工具,用于可视化管理 SSH 本地端口转发。

典型场景:远程主机上有个服务只监听它自己的 127.0.0.1:3000,公网访问不到。 用本工具建一条隧道后,在本机打开 http://127.0.0.1:3000 即可直接访问该服务。

运行

双击 启动.bat。首次运行会自动创建虚拟环境并安装依赖(pywebview、paramiko), 之后秒开。也可以手动:

python -m venv .venv
.venv\Scripts\python -m pip install pywebview paramiko
.venv\Scripts\python main.py

要求:Windows 10/11(自带 WebView2 运行时,如缺失请安装 Edge WebView2 Runtime)、Python 3.10+。

使用

  1. 主机:添加一台 SSH 主机(地址、端口、用户名;认证支持密码或私钥,可点「测试连接」验证)。
  2. 隧道:新建一条隧道,选择主机,填远程地址(一般 127.0.0.1)、远程端口和本地端口,点「启动」。
  3. 本机访问 127.0.0.1:本地端口 即等于访问远程服务;卡片上的「打开」按钮可直接在浏览器打开。

其他:断线自动重连(间隔递增)、随应用启动、运行时长与累计连接数、每条隧道及全局日志。 点「最小化」或「关闭」会驻留到系统托盘(隧道在后台保持运行):左键托盘图标恢复窗口, 右键菜单可显示或退出;首次最小化会有气泡提示。 配置保存在 %APPDATA%\SshTunnelManager\config.json,密码与私钥口令经 Windows DPAPI 加密后落盘(绑定当前 Windows 用户,明文不落盘);主机公钥记录在同目录 known_hosts, 主机密钥变更时会拒绝连接。

文件结构

main.py     入口:pywebview 窗口与 JS API
engine.py   隧道引擎:paramiko 转发、保活、自动重连
storage.py  配置存储:JSON + DPAPI 加密
ui/         前端界面(原生 WebView2 渲染)
test_sshd.py  本地测试用 SSH 服务端(自测)
test_e2e.py   端到端自测脚本(需先启动 test_sshd)

自测

:: 窗口 1
.venv\Scripts\python test_sshd.py
:: 窗口 2(会在本机 3210 起一个模拟"远程服务",经隧道 13000 访问)
.venv\Scripts\python test_e2e.py
S
Description
No description provided
Readme
191 KiB
Languages
Python 53.7%
JavaScript 23.7%
CSS 11.6%
HTML 4%
Shell 3.5%
Other 3.5%