Hawk SSH Tunnel
本页面用于管理远程 SSH 隧道、URL 转发代理和浏览器代理。完整单页文档位于 doc/usage.html。
服务端
admin_addr:管理页面监听地址,默认 :8039。
control_addr:客户端控制连接端口,默认 :7000。
data_advertise_host:客户端回连数据通道时访问的服务端地址,跨机器部署时应改成服务端可达 IP 或域名。
admin_token:登录管理页面使用的 Admin Token。
shared_secret:客户端和服务端认证使用的共享密钥。
构建
go build -buildvcs=false -o .\hawk.exe .\cmd\hawk
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -buildvcs=false -o ./hawk-linux-amd64 ./cmd/hawk
Linux 使用 ./cmd/hawk,不要使用 Windows 写法 .\cmd\hawk。
创建 SSH 隧道
- 在左侧节点列表中选择一个在线节点。
- 填写内网目标和 SSH 端口,外部端口填
0 表示自动分配。
- 创建成功后,通过
ssh user@服务端IP -p 外部端口 访问内网 SSH。
- 隧道列表的「活跃」数字可点击查看连接审计:每个活跃连接的源 IP、IP 地理位置和连接开始时间。
- 服务端
data_advertise_host 必须填写客户端可访问的公网 IP 或域名,例如 pmcopy.com。
- 客户端
allowed_targets 必须与 Web 目标完全一致,例如 127.0.0.1:22。
- 修改配置后要重启服务端和客户端,并重新创建旧隧道。pm2 可使用
pm2 restart hawk-server。
浏览器代理
- 浏览器或系统代理地址通常设置为
127.0.0.1:7890。
- 允许目标端口填写
0 表示允许所有目标端口;否则只允许列表中的端口,例如 80,443。
- 客户端
browser_proxy_enabled 和服务端浏览器代理策略必须同时启用。
- MFC 状态灯会依次查询
ip-api.com、ipinfo.io、api.iplocation.net 获取出口地域。
curl.exe --proxy http://127.0.0.1:7890 https://myip.ipip.net/
curl.exe -v --proxy http://127.0.0.1:7890 https://myip.ipip.net/
MFC Windows 客户端
Fallback target 仅在服务端请求未显式携带目标时使用;Allowed targets 是目标白名单。
Allow remote tunnel connections 控制服务端是否可以通过客户端创建 SSH 隧道。
Allow remote proxy connections 控制其他机器是否可以连接客户端浏览器代理监听端口。
- Go 日志只写入
log_file,按天压缩为 *.zip,只保留最近 7 天。PM2 stdout/stderr 为空是预期行为。
两步验证(Google Authenticator)
- 设置 → 两步验证 → 开启两步验证,用手机上的 Google Authenticator 扫码或手动录入密钥,再输入 6 位动态码确认。
- 启用后登录需同时提供 Admin Token 和动态码;接口只接受登录后签发的会话令牌(约 12 小时有效)。
- 忘记携带手机时:停掉服务端,删除数据目录下的
totp.json 再启动,即可恢复仅 Admin Token 登录。
安全注意事项
- 生产环境必须修改默认的
admin_token 和 shared_secret。
- 建议配置正式 TLS 证书,并限制管理端口的访问来源。
- URL 转发代理或浏览器代理暴露到局域网/公网时,不建议允许私网目标。
- 服务端设置中的「隧道白名单」可限制 SSH 隧道映射端口的访问来源,白名单为空时拒绝所有外部连接。顶栏会显示您当前登录的来源 IP,便于确认自己的出口地址。