edge.ng
基于 SSH 隧道的内网穿透服务

一条命令
将本地服务暴露到公网

通过 SSH 反向隧道将本地服务暴露到公网。无需安装客户端,无需注册账号,支持自定义子域名,自动 HTTPS。

ssh — edge.ng
$ ssh -R dev:80:127.0.0.1:8080 ssh.edge.ng
 
Press Ctrl-C to close the session.
 
Starting SSH Forwarding service for http:80.
Forwarded connections can be accessed via the following methods:
HTTP: http://dev.edge.ng
HTTPS: https://dev.edge.ng
FEATURES

为什么选择 edge.ng

零配置、端到端加密、自动 HTTPS —— 开发者友好的内网穿透方案。

零配置部署

无需安装客户端、编写配置文件或启动守护进程,系统自带的 SSH 客户端就能用。

SSH 加密传输

所有流量经 SSH 隧道加密传输,公钥白名单鉴权,只有授权用户才能创建隧道。

自动 HTTPS

泛域名证书开箱即用,每条隧道自动获得 https:// 地址,无需任何额外配置。

自定义子域名

指定好记的子域名分享给团队成员,不指定时由系统自动分配随机子域名。

QUICKSTART

两步,把本地服务暴露到公网

首次使用先把公钥交给管理员加入白名单,之后每次上线只需一条命令。

01
配置公钥鉴权 生成密钥,把公钥交给管理员导入白名单,即时生效
# 本地:生成密钥(已有可跳过)
$ ssh-keygen -t ed25519
$ cat ~/.ssh/id_ed25519.pub
 
# 管理员在服务器上导入
$ sudo sish-adduser alice "ssh-ed25519 AAAA..."
02
一条命令上线 SSH 反向端口转发,Ctrl-C 即下线;子域名被占用时自动分配随机子域名
# 指定子域名 → https://dev.edge.ng
$ ssh -R dev:80:127.0.0.1:8080 ssh.edge.ng
 
# 随机子域名 → https://xxx.edge.ng
$ ssh -R 80:127.0.0.1:8080 ssh.edge.ng
TIP 需要长时间挂着?用 autossh 断线自动重连: autossh -M 0 -o "ServerAliveInterval 30" -R dev:80:127.0.0.1:8080 ssh.edge.ng
SELF-HOST

三步,自建同款服务

不常用容易忘,完整部署流程记在这里。前置条件:一台有公网 IP 的服务器(Ubuntu/Debian),域名的 @* 两条 A 记录指向它。

01
服务器:一键安装 自动接管 22 端口 + 签发泛域名 HTTPS 证书(域名托管在 Cloudflare)
$ curl -fsSL https://gist.githubusercontent.com/
harrisonwang/bcbfea9d71510ec300bdbfe9eab8f9bb/
raw/sish-install.sh \
| sudo DOMAIN=example.com \
ACME_EMAIL=you@example.com \
CF_Token=xxx TAKEOVER_22=yes bash
02
服务器:放行端口并确认 10 分钟内未确认会自动回滚,登录不上也不会失联
# 云安全组放行 22022(管理 SSH 新端口)
# 新开终端验证能登录:
$ ssh -p 22022 ubuntu@服务器IP
 
# 登录成功后,取消自动回滚:
$ sudo sish-confirm
03
添加用户,开始使用 导入公钥即时生效,之后就是上面的快速开始
# 服务器:导入用户公钥
$ sudo sish-adduser alice \
"ssh-ed25519 AAAA... alice@laptop"
 
# 客户端:建隧道
$ ssh -R demo:80:127.0.0.1:4321 ssh.example.com

环境变量、HTTPS 证书方式、卸载等完整说明见 安装脚本头部注释 ↗