# toh **Repository Path**: zidieq/toh ## Basic Information - **Project Name**: toh - **Description**: 原仓库地址:https://github.com/EtherDream/toh - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-26 - **Last Updated**: 2026-02-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ToH (TCP over HTTP) 本项目是直接从github拉过来的,原仓库地址:https://github.com/EtherDream/toh ## 简介 将 TCP 流量封装到 HTTP 中,从而隐藏网站管理服务,减少被攻击的风险。 ## 用法 需要 nodejs。版本 没有测试,安装长期支持版本可能都可以的 **服务端** : node toh.js -s http-port **客户端** : node toh.js -c local-port url remote-port ## 演示 **服务端** : 使用如下命令启动监听,比如此处监听8080端口,客户端可以向这个端口发起服务请求 node ./toh.js -s 8080 **客户端** : node ./toh.js -c 10021 http://server-ip:8080 22 说明: `-c 10021` 表示绑定到本地的10021端口上 `http://server-ip:8080` 表示服务端的地址和端口号 `22` 表示访问服务器上的22端口,服务端做了端口限制,可以到`toh.js`中向`allowedPorts`数组添加端口白名单,这样客户端就可以访问对应的端口了 综上:将服务器上的22端口映射到本地的10021端口上 **客户端测试** : ssh 127.0.0.1 -p 10021 说明:客户端访问本地的10021端口就相当于访问服务端的22端口 ## 应用 本程序不提供认证、加密、日志等功能,所以最好不要运行在公网上,而是通过已有的 Web 服务进行转发,例如 nginx: ```nginx server { server_name mysite.com; listen 443 ssl; ssl_certificate mysite.com.cer; ssl_certificate_key mysite.com.key; # ... location = /ssh-xxxx { proxy_pass http://unix:/tmp/toh.sock; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; proxy_buffering off; proxy_request_buffering off; } } ``` 服务端: rm -f /tmp/toh.sock ./toh -s /tmp/toh.sock 客户端: ./toh -c 10022 https://mysite.com/ssh-xxxx 22 将 `xxxx` 替换成随机字符串 (例如 `uuidgen`) 以防路径爆破。 将本程序运行为后台服务模式,即可删除服务器防火墙中的 SSH、远程桌面等私有运维服务的端口,对外只公开 Web 端口,减少被攻击的风险。[查看更多](https://github.com/EtherDream/toh/wiki/%E5%A6%82%E4%BD%95%E9%9A%90%E8%97%8F%E7%AE%A1%E7%90%86%E7%AB%AF%E5%8F%A3)