## 项目简介 本项目提供一组脚本,便于在本地快速管理多个 SSH SOCKS5 隧道。 - `ssh_tunnel.py`:封装单条 SSH 隧道的启动、停止、状态查询,并支持连接复用模式。 - `run_tunnels.py`:批量启动/监控/停止在脚本中预先写死的一组隧道,适合日常固定场景一键管理。 ## 环境要求 1. Python 3.8+。 2. 本机可执行的 `ssh` 命令(OpenSSH 客户端)。 3. 目标服务器已配置好密钥免密登录,或允许你在前台输入密码。 4. 确保本地监听端口(如 1066、1067 等)未被占用。 ## 单条隧道管理 (`ssh_tunnel.py`) ```bash # 启动一个 SOCKS5 隧道,监听 127.0.0.1:1066 python ssh_tunnel.py start -H 117.50.195.224 -u root -p 29765 -D 1066 # 查看某端口是否在监听 python ssh_tunnel.py status -D 1066 # 停止隧道(依赖脚本生成的 PID 文件) python ssh_tunnel.py stop -H 117.50.195.224 -u root -p 29765 -D 1066 ``` 进阶: - `start-mux` / `stop-mux` / `status-mux` 支持 SSH 连接复用。 - 使用 `--force` 可忽略本地端口占用检查(谨慎使用)。 - `--strict-no` 可临时关闭主机指纹校验(测试环境下可用,生产不建议)。 ## 批量管理 (`run_tunnels.py`) 脚本内部定义了一组固定的隧道(可按需修改服务器、端口、局部 SOCKS 端口等)。提供以下命令: ```bash # 依次后台启动所有隧道 python run_tunnels.py start # 检查脚本里列出的几个端口是否在监听 python run_tunnels.py status # 针对脚本中预设的服务器执行停止操作 python run_tunnels.py stop ``` `start` 会并行启动多个 `ssh_tunnel.py start` 进程;`status` / `stop` 会串行执行并输出结果。若需要增删隧道,请直接编辑 `run_tunnels.py` 中 `start_cmds`/`status_cmds`/`stop_cmds` 列表。 ## 日常建议 - 建议使用密钥认证,并在服务器端配置 `~/.ssh/config` 以减少参数。 - 生产环境请保留主机指纹验证,避免 `--strict-no`。 - 如需持久运行,可结合系统服务(systemd、PM2、任务计划等)管理这些脚本。