SSH隧道代理 (ssh_tunnels) 使用说明
·
============================================================
SSH隧道代理 (ssh_tunnels) 使用说明
============================================================
一、程序简介
------------------------------------------------------------
SSH隧道代理是一个基于 Go 开发的 SSH 隧道转发管理系统,
提供 Web 管理界面,主要功能:
- 通过浏览器添加、管理 SSH 连接(密码认证)
- 创建本地端口转发隧道(Local Forwarding)
- 创建 SOCKS5 动态代理隧道
- 在线查看连接与隧道运行状态,随时停止/重启/删除隧道
- 支持远程文件管理(上传/下载/删除/新建目录)和 Web 终端
程序为单一可执行文件,静态页面已内嵌其中,无需安装任何
依赖(不需要 Go 环境、不需要额外配置文件),拷贝到任意
目录即可运行。
相关下载:
docker版本:
docker run -d --name ssh_tunnels -p 9527:9527 -v /etc/ssh_tunnels/data:/data moodincode/ssh_tunnels:latest
window/linxu版本:
https://download.csdn.net/download/qq_24577585/93345902
二、文件清单
------------------------------------------------------------
ssh_tunnels_linux_amd64 Linux 64位 (x86_64) 可执行文件
ssh_tunnels_linux_arm64 Linux 64位 (ARM64) 可执行文件
ssh_tunnels_windows_amd64.exe Windows 64位 可执行文件
start.sh Linux 服务管理脚本(推荐使用)
ssh隧道代理使用说明.txt 本说明文件
docker容器版本,请访问https://hub.docker.com/r/moodincode/ssh_tunnels
按服务器 CPU 架构选择对应 Linux 文件即可,ARM 架构的
服务器(树莓派、飞腾、鲲鹏等)使用 ssh_tunnels_linux_arm64。
三、Windows 启动方法
------------------------------------------------------------
方式一(最简单):
双击 ssh_tunnels_windows_amd64.exe 即可启动。
方式二(命令行,可指定端口):
打开 cmd,进入程序所在目录,执行:
ssh_tunnels_windows_amd64.exe
指定端口启动:
ssh_tunnels_windows_amd64.exe -port 8080
启动后浏览器访问: http://localhost:9527 (或指定的端口)
注意事项:
- 首次运行若弹出 Windows 防火墙提示,请选择"允许访问"。
- 关闭命令行窗口会停止服务;如需长期运行请保持窗口开启,
或使用 Linux 服务器部署。
- 数据保存在程序目录下的 data\ssh_manager.db。
四、Linux 启动方法(推荐用 start.sh)
------------------------------------------------------------
1. 上传文件到服务器(例如 /home/app 目录):
mkdir -p /home/app && cd /home/app
将 ssh_tunnels_linux_amd64(或 arm64 版本)与 start.sh
上传到该目录。
2. 赋予执行权限:
chmod +x start.sh ssh_tunnels_linux_amd64
3. 启动服务(默认端口 9527):
./start.sh start
指定端口启动:
PORT=8080 ./start.sh start
4. 查看运行状态:
./start.sh status
5. 实时查看日志(按 Ctrl+C 退出):
./start.sh logs
6. 停止 / 重启服务:
./start.sh stop
./start.sh restart
常用命令汇总:
./start.sh start 启动服务
./start.sh stop 停止服务
./start.sh restart 重启服务
./start.sh status 查看状态
./start.sh logs 查看日志
start.sh 说明:
- 会根据 CPU 架构自动选择对应的可执行文件,无需手动指定。
- 启动后自动生成 ssh_tunnels.pid(进程号)和 ssh_tunnels.log(日志)。
- 数据库默认保存在脚本同目录下的 data/ssh_manager.db。
五、防火墙与安全组(重要)
------------------------------------------------------------
服务器上若开启防火墙,需放行 9527 端口:
- CentOS / RHEL / 麒麟:
firewall-cmd --permanent --add-port=9527/tcp
firewall-cmd --reload
- Ubuntu / Debian(ufw):
ufw allow 9527/tcp
云服务器(阿里云、腾讯云、华为云等)还需在控制台的
"安全组"中添加入方向规则,放行 TCP 9527 端口。
(若修改了端口,请放行对应的端口)
六、使用 Web 界面
------------------------------------------------------------
1) 首次访问
浏览器打开: http://服务器IP:9527
首次使用需设置"访问密码"(至少 4 位),设置完成后
每次访问都需要登录,请牢记该密码。
2) 添加 SSH 连接
在"SSH连接"区域填写:
- 连接名称:随意填写,方便识别
- 服务器地址:IP 或 域名
- 端口:默认 22
- 用户名:SSH 登录用户名
- 密码:SSH 登录密码
点击"连接SSH服务器",连接成功后状态显示"已连接"。
已保存的连接会持久化,重启程序后仍保留。
3) 创建隧道(本地端口转发)
- 选择已连接的 SSH 连接
- 填写隧道名称
- 类型选择"本地转发"
- 本地监听地址:一般填 0.0.0.0 或 127.0.0.1
- 本地监听端口:例如 3306
- 远程主机:例如 127.0.0.1
- 远程端口:例如 3306
点击"创建隧道"。
效果:访问本机(服务器) 3306 端口,等于访问 SSH 服务器
侧能访问到的 3306 端口,常用于远程连接内网数据库等场景。
4) 创建 SOCKS5 代理(动态转发)
类型选择"SOCKS5",只需填写本地监听端口,
创建后把浏览器或程序的代理设置为 服务器IP:端口,
即可通过该 SSH 服务器转发上网。
5) 管理连接与隧道
- 隧道可随时停止、重启、删除
- 删除 SSH 连接会自动关闭该连接下的所有隧道
- 隧道配置保存在数据库中,重启程序后自动恢复
6) 其他功能
- 支持在 Web 页面打开远程终端(SSH 命令行)
- 支持远程文件管理:上传、下载、删除文件,新建目录
- 支持连接配置的批量导出 / 导入(便于迁移服务器)
七、数据存储与备份
------------------------------------------------------------
所有配置(SSH连接、隧道、访问密码)保存在 SQLite 数据库中:
Linux: <程序目录>/data/ssh_manager.db
Windows: <程序目录>\data\ssh_manager.db
备份时直接拷贝 data 目录(或整个程序目录)即可。
删除该文件后,程序会重新生成一个空的数据库。
八、修改监听端口
------------------------------------------------------------
方式一(命令行参数):
Linux: PORT=8080 ./start.sh restart
Windows: ssh_tunnels_windows_amd64.exe -port 8080
方式二(环境变量):
Linux: export PORT=8080
注意:修改端口后,需同步放行防火墙/安全组中对应的端口。
九、常见问题
------------------------------------------------------------
Q1: 网页打不开?
检查服务是否已启动(./start.sh status);
检查防火墙/安全组是否放行端口;
本机验证:curl http://127.0.0.1:9527
Q2: 添加 SSH 连接失败?
确认服务器地址/端口/用户名/密码是否正确;
确认服务器允许密码登录;
确认服务器 22 端口可访问(telnet 服务器IP 22 测试)。
Q3: 隧道创建后连不上?
确认对应 SSH 连接处于"已连接"状态;
确认本地监听端口未被其他程序占用;
确认远程目标服务正常运行。
Q4: 忘记访问密码怎么办?
程序提供了"修改密码"功能(登录后可在页面修改);
若彻底忘记且无法登录,只能删除数据库文件
data/ssh_manager.db 后重启程序重新设置
(注意:连接和隧道配置会一并清除,建议平时先导出配置备份)。
Q5: 如何设置开机自启?
Linux 可将启动命令加入 crontab(@reboot):
crontab -e
添加一行: @reboot /home/app/start.sh start
(也可使用 systemd 服务,请按需配置)
Q6: 程序会占用哪些资源?
默认监听 9527 端口(Web 管理界面);
每个 SSH 连接一个 SSH 会话,每个隧道一个本地端口;
隧道本地端口不与 Web 端口冲突即可。
十、完整操作流程(从访问页面到创建隧道)
------------------------------------------------------------
第 1 步:访问页面
启动程序后,在浏览器地址栏输入:
http://服务器IP:9527
(本机测试可用 http://127.0.0.1:9527)
能看到页面即表示程序启动成功。
第 2 步:首次设置访问密码
第一次访问页面时,会提示设置"访问密码":
- 输入密码(至少 4 位,最多 64 位)
- 再次确认密码
- 点击"设置密码"
设置成功后自动进入管理主页面。
注意:
- 之后每次访问都需要输入该密码登录,请牢记;
- 登录后可在页面中"修改密码"。
第 3 步:添加 SSH 远程机器
在主页面"SSH连接"区域,点击添加连接,填写:
- 连接名称:随意填写,方便识别(如"内网数据库服务器")
- 服务器地址:目标机器的 IP 或 域名
- 端口:SSH 端口,默认 22
- 用户名:SSH 登录用户名(如 root)
- 密码:SSH 登录密码
点击"连接SSH服务器":
- 连接成功后,该连接状态显示为"已连接"(绿色)
- 连接失败会提示原因(地址错误 / 密码错误 / 端口不通等)
可添加多台机器,每台机器对应一个 SSH 连接。
第 4 步:添加隧道
在"隧道"区域点击"创建隧道",填写:
- 选择 SSH 连接:选择刚添加并已连接的机器
- 隧道名称:随意填写,方便识别
- 隧道类型:见下方"隧道类型说明"
- 本地监听地址 / 本地监听端口
- 远程主机 / 远程端口(SOCKS5 类型无需填写)
点击"创建隧道",隧道状态变为"运行中"即创建成功。
第 5 步:验证隧道
按隧道类型验证转发是否生效(验证方法见下方各类型说明)。
十一、隧道类型说明
------------------------------------------------------------
程序支持三种隧道类型:
本地转发(local)、远程转发(remote)、SOCKS5动态代理(dynamic)
【1. 本地转发 - local】(最常用)
作用:把"运行程序的机器上某个端口"的访问请求,通过 SSH
服务器转发到"SSH服务器所在网络中的某个服务"。
场景举例:
- 通过公网跳板机访问内网的 MySQL(3306 端口)
- 访问外网无法直连的内网 Web 服务
填写示例:
本地监听地址: 0.0.0.0(或 127.0.0.1)
本地监听端口: 3306
远程主机: 127.0.0.1
远程端口: 3306
效果:访问 本机:3306 = 访问 SSH服务器所在内网的 3306
验证:mysql -h 本机IP -P 3306 -u root -p
【2. 远程转发 - remote】
作用:与本地转发相反,让"SSH 远程服务器上的某个端口",
转发到"运行程序的机器上的某个服务"。
场景举例:
- 本机跑了一个服务(如 8080),想让其他机器通过
SSH 服务器访问到它(类似内网穿透)
填写示例:
本地监听地址: 127.0.0.1
本地端口: 8080 (本机上的服务端口)
远程主机: 127.0.0.1
远程端口: 18080 (SSH 服务器上对外开放的端口)
效果:访问 SSH服务器:18080 = 访问 本机:8080
注意:远程端口需在 SSH 服务器防火墙中放行。
【3. SOCKS5 动态代理 - dynamic】
作用:通过 SSH 服务器建立一个 SOCKS5 代理,所有流量都从
SSH 服务器出口转发,相当于借用服务器网络访问资源。
场景举例:
- 服务器网络可以访问的资源,本机直接访问不了
- 需要一个固定出口 IP 上网
填写示例:
本地监听地址: 0.0.0.0(或 127.0.0.1)
本地监听端口: 1080
效果:把浏览器/程序的 SOCKS5 代理设置为 本机IP:1080,
即可通过 SSH 服务器转发流量。
验证:浏览器设置代理后访问查询 IP 的网站,出口 IP
应为 SSH 服务器的 IP。
三种类型对比:
类型 | 数据方向 | 关键填写项
----------+-----------------------------+------------------------------
本地转发 | 本机端口 -> 远程服务 | 本地端口 + 远程主机/端口
远程转发 | 远程端口 -> 本机服务 | 远程端口 + 本地主机/端口
SOCKS5 | 本机代理端口 -> 全网 | 仅本地监听端口即可
----------+-----------------------------+------------------------------
创建隧道时若"运行中",说明隧道已生效;若提示失败,
请检查对应 SSH 连接是否"已连接"以及端口是否被占用。
============================================================
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐



所有评论(0)