# AutoTunnel **Repository Path**: ansenchina/auto-tunnel ## Basic Information - **Project Name**: AutoTunnel - **Description**: 远程隧道反射项目,达到安全,高速,低成本的目标需求 - **Primary Language**: PHP - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-11 - **Last Updated**: 2025-08-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AutoTunnel 自动化隧道管理脚本 ![License](https://img.shields.io/badge/license-MIT-blue.svg) ![PHP](https://img.shields.io/badge/php-8.2.0%2B-green.svg) ![Platform](https://img.shields.io/badge/platform-Windows-yellow.svg) ## 项目简介 AutoTunnel是一个专为Windows平台设计的SSH隧道自动化管理脚本,实现了隧道的自动启动、停止和监控功能。 - **版本**: v1.0.0 - **发布日期**: 2025-08-21 - **作者**: alexansen@qq.com - **主要功能**: Windows平台下的SSH隧道自动化管理 - **系统要求**: PHP 8.2.0或更高版本,Windows操作系统 ## 快速开始 ### 基本运行方式 1. 以管理员模式打开命令行窗口 2. 切换到项目根目录 3. 执行命令: `php AutoTunnel.php` 程序将自动检查环境、加载配置并管理隧道连接。 ### 命令行参数 ``` --debug 启用调试模式,输出详细执行记录,不检查远程端口状态 ``` ### 示例 ```bash # 启用调试模式 php AutoTunnel.php --debug ``` ## 配置说明 配置直接在`AutoTunnel.php`文件头部定义,主要配置项包括: ```php $GLOBALS['config'] = [ 'local_listen_port' => 6080, // 本地监听端口 'remote_server' => 'google.org', // 远程服务器地址 'ssh_port' => 22, // SSH服务端口 'remote_listen' => 16213, // 远程监听端口 'ssh_key_path' => 'remote.host.ppk', // SSH密钥文件路径 'ssh_user' => 'root', // SSH用户名 'debug_mode' => false, // 是否启用调试模式 'log_level' => 3 // 日志级别 ]; ``` > **注意**:修改配置后需重启程序生效。 ## 工作流程 ### 1. 环境检查 - 检查PHP版本(要求8.2.0+) - 检查操作系统(仅支持Windows) - 检测远程隧道端口可达性 ### 2. 配置加载与初始化 - 使用`loadConfig()`函数加载内置配置 - 解析命令行参数 - 检查本地服务状态 - 检查远程服务器SSH端口可达性 - 验证SSH密钥文件 ### 3. 隧道管理 - 检测并清理现有隧道进程 - 启动新的隧道进程 - 验证隧道启动状态 - 根据远程服务状态决定后续操作 ### 4. 调试模式 启用`--debug`参数后,程序将: - 输出详细的调试信息 - 不检查远程端口状态 - 显示配置信息和权限详情 - 即使远程端口可达,仍继续执行程序 ## 功能详情 ### 远程隧道端口检测 程序使用PHP的curl扩展检测远程隧道端口可达性: - 若端口可达且非调试模式,程序将退出 - 若端口不可达或处于调试模式,继续执行后续流程 ### 本地服务状态检查 使用`fsockopen()`检查本地端口连通性: - 若本地端口不可用,程序中止执行 - 若本地端口可用,继续执行 ### SSH密钥文件验证 - 检查密钥文件是否存在 - 使用`icacls`命令检查和修复文件权限 - 确保密钥文件权限符合安全要求 ### 隧道进程管理 - 使用PowerShell的`Get-CimInstance`查询现有隧道进程 - 使用`taskkill`命令终止不符合条件的进程 - 启动新的隧道进程并验证启动状态 ## 常见问题 ### 1. 为什么需要管理员权限? 程序需要使用管理员权限执行以下操作: - 检查和修改文件权限 - 终止系统进程 - 建立网络连接 ### 2. 如何查看详细日志? 使用`--debug`参数启用调试模式,可以查看详细的执行日志。 ### 3. 如何修改隧道配置? 直接编辑`AutoTunnel.php`文件头部的配置数组,然后重启程序。 ## 许可证 本项目采用MIT许可证,详情请见LICENSE文件。