详细了解如何使用和配置SSH-Tunnel
SSH-Tunnel 是一个基于SSH协议的隧道代理工具,可以在本地建立SOCKS5和HTTP代理,通过SSH隧道将流量安全地转发到远程服务器。这对于以下场景特别有用:
最简单的使用方式是通过以下命令启动SSH隧道:
./ssh-tunnel -s xx.xx.xx.xx
其中 xx.xx.xx.xx 是您的SSH服务器地址。这将使用默认设置:
~/.ssh/id_rsa 作为私钥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 支持多种代理模式,可以根据您的需求进行配置:
默认情况下,SSH-Tunnel 会在本地 1081 端口启动 SOCKS5 代理。可以通过以下参数进行配置:
./ssh-tunnel -s xx.xx.xx.xx -socks5.enable -l 0.0.0.0:1081
SSH-Tunnel 还支持 HTTP 代理模式,默认在本地 1082 端口,需要显式启用:
./ssh-tunnel -s xx.xx.xx.xx -http.enable -http.local.address 127.0.0.1:1082
您可以为 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 请求通过 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-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 上,您可以将 SSH-Tunnel 配置为 LaunchAgent 以实现开机自启动:
/usr/local/bin 目录下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>
/Library/LaunchDaemons 目录下sudo chown -R root /Library/LaunchDaemons/com.idefav.ssh-tunnel.plist
launchctl load -w /Library/LaunchDaemons/com.idefav.ssh-tunnel.plist
在 Windows 上,SSH-Tunnel 提供了服务安装功能:
ssh-tunnel 目录.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
C:\ssh-tunnel\ssh-tunnel-svc.exe install --config=C:\ssh-tunnel\.ssh-tunnel\config.properties
然后可以在服务管理器中找到并启动 SSHTunnelService。