SSH-Tunnel 文档

详细了解如何使用和配置SSH-Tunnel

简介

SSH-Tunnel 是一个基于SSH协议的隧道代理工具,可以在本地建立SOCKS5和HTTP代理,通过SSH隧道将流量安全地转发到远程服务器。这对于以下场景特别有用:

  • 安全地浏览网络,防止本地网络监控
  • 访问受地理位置限制的内容
  • 绕过网络防火墙限制
  • 保护网络通信安全

快速开始

最简单的使用方式是通过以下命令启动SSH隧道:

./ssh-tunnel -s xx.xx.xx.xx

其中 xx.xx.xx.xx 是您的SSH服务器地址。这将使用默认设置:

  • 本地SOCKS5代理端口:1081
  • SSH服务器端口:22
  • 使用 ~/.ssh/id_rsa 作为私钥
  • 用户名:root

命令选项

SSH-Tunnel 提供了丰富的命令行选项,以便根据您的需求进行自定义配置:

选项 描述 默认值
-s, -server.ip 服务器IP地址 无(必填)
-p, -server.ssh.port 服务器SSH端口 22
-u, -login.username 用户名 root
-l, -local.address 本地SOCKS5代理地址 0.0.0.0:1081
-pk, -ssh.private_key_path 私钥地址 ~/.ssh/id_rsa
-socks5.enable 是否开启Socks5代理 true
-http.enable 是否开启Http代理 false
-http.local.address Http监听地址 0.0.0.0:1082
-http.over.ssh.enable 是否开启Http Over SSH false
-http.domain-filter.enable 是否启用Http域名过滤 false
-http.domain-filter.file-path 过滤http请求的域名文件 ~/.ssh-tunnel/domain.txt
-http.basic.enable 是否开启Http的Basic认证 false
-http.basic.username Basic认证用户名
-http.basic.password Http Basic认证密码
-admin.enable 是否启用Admin页面 false
-admin.address Admin监听地址 :1083
-retry.interval.sec 重试间隔时间(秒) 3

代理模式

SSH-Tunnel 支持多种代理模式,可以根据您的需求进行配置:

SOCKS5 代理

默认情况下,SSH-Tunnel 会在本地 1081 端口启动 SOCKS5 代理。可以通过以下参数进行配置:

./ssh-tunnel -s xx.xx.xx.xx -socks5.enable -l 0.0.0.0:1081

HTTP 代理

SSH-Tunnel 还支持 HTTP 代理模式,默认在本地 1082 端口,需要显式启用:

./ssh-tunnel -s xx.xx.xx.xx -http.enable -http.local.address 127.0.0.1:1082

HTTP Basic 认证

您可以为 HTTP 代理启用基本认证,提高安全性:

./ssh-tunnel -s xx.xx.xx.xx -http.enable -http.basic.enable -http.basic.username admin -http.basic.password password

HTTP Over SSH

启用 HTTP Over SSH 功能,可以将 HTTP 请求通过 SSH 隧道转发:

./ssh-tunnel -s xx.xx.xx.xx -http.enable -http.over.ssh.enable

管理界面

SSH-Tunnel 提供了一个内置的管理界面,方便您监控连接状态、查看日志和配置信息:

./ssh-tunnel -s xx.xx.xx.xx -admin.enable -admin.address 127.0.0.1:1083

启用后,您可以通过浏览器访问 http://localhost:1083/view/index 来打开管理界面。

管理界面包含以下功能:

  • SSH 状态:显示 SSH 连接的状态和相关信息
  • 日志:查看应用运行日志
  • 域名列表:查看和编辑域名过滤列表
  • 应用配置:查看当前应用配置信息
管理界面预览

管理界面预览

域名过滤

SSH-Tunnel 支持 HTTP 请求的域名过滤功能,可以根据域名决定是否通过 SSH 隧道转发请求:

./ssh-tunnel -s xx.xx.xx.xx -http.enable -http.domain-filter.enable -http.domain-filter.file-path /path/to/domain.txt

域名过滤文件 domain.txt 的格式示例:

*.google.com
*.github.com
github.com
*.stackoverflow.com
stackoverflow.com

当启用域名过滤时,只有匹配这些域名的 HTTP 请求会通过 SSH 隧道转发。您可以通过管理界面动态管理这些域名。

服务配置

SSH-Tunnel 支持配置为系统服务,以实现开机自启动。

MacOS 开机自启动配置

在 MacOS 上,您可以将 SSH-Tunnel 配置为 LaunchAgent 以实现开机自启动:

  1. 将 ssh-tunnel 可执行文件放到 /usr/local/bin 目录下
  2. 创建 com.idefav.ssh-tunnel.plist 文件,内容类似如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>com.idefav.ssh-tunnel</string>
    <key>Disabled</key>
    <false/>
    <key>KeepAlive</key>
    <true/>
    <key>ProcessType</key>
    <string>Background</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/local/bin/ssh-tunnel</string>
      <string>-s</string>
      <string>xx.xx.xx.xx</string>
      <string>-server.ssh.port</string>
      <string>10022</string>
      <string>-l</string>
      <string>0.0.0.0:1081</string>
      <string>-socks5.enable=false</string>
      <string>-http.enable</string>
      <string>-http.over.ssh.enable</string>
      <string>-http.domain-filter.enable</string>
    </array>
    <key>UserName</key>
    <string>root</string>
    <key>GroupName</key>
    <string>wheel</string>
  </dict>
</plist>
  1. 将该文件放到 /Library/LaunchDaemons 目录下
  2. 设置文件权限和加载服务:
sudo chown -R root /Library/LaunchDaemons/com.idefav.ssh-tunnel.plist
launchctl load -w /Library/LaunchDaemons/com.idefav.ssh-tunnel.plist

Windows 服务配置

在 Windows 上,SSH-Tunnel 提供了服务安装功能:

  1. 在 C 盘根目录创建 ssh-tunnel 目录
  2. 在该目录下创建 .ssh-tunnel 目录,并创建 config.properties 文件:
server.ip=xx.xx.xx.xx
server.ssh.port=22
ssh.private_key_path=C:\\Users\\username\\.ssh\\id_rsa
login.username=root
local.address=127.0.0.1:1081
http.local.address=127.0.0.1:1082
http.enable=false
socks5.enable=true
http.over-ssh.enable=false
http.domain-filter.enable=false
http.domain-filter.file-path=C:\\Users\\username\\Documents\\ssh-tunnel\\domain.txt
admin.enable=true
admin.address=127.0.0.1:1083
  1. 安装 Windows 服务:
C:\ssh-tunnel\ssh-tunnel-svc.exe install --config=C:\ssh-tunnel\.ssh-tunnel\config.properties

然后可以在服务管理器中找到并启动 SSHTunnelService