nssh 开源
nssh 是一个用 Go 编写的开源轻量级 SSH 反向隧道客户端(MIT 许可证)。它能够将位于 NAT 或防火墙后的本地服务,通过 SSH 服务器暴露到公网。
# 一条命令,把本地 8000 端口的服务映射到公网 8080
nssh -R 8080:localhost:80 user@your-server.com -p 22 --passwd your_password
信息
nssh 连接的是任意原生 SSH 服务端——既可以搭配内网云的隧道服务使用,也可以连接你自己的 VPS 上的 sshd(等价于 ssh -R),没有平台锁定。
功能特性
- SSH 反向隧道 —
ssh -R等价实现 - 自动重连 — 可配置延迟,断线自动重连
- 心跳保活 — 定期发送心跳检测连接状态
- 守护进程模式 — 后台运行,统一管理多条隧道
- 多认证方式 — 密码认证和 SSH 密钥认证
- 跨平台 — Linux、macOS、Windows、FreeBSD
- 轻量高效 — 二进制体积小、内存占用低
安装方式
npm(推荐)
Node.js 14+ 环境,一条命令安装,自动匹配当前平台(macOS / Linux / Windows):
npm install -g @buladou/nssh
pip
Python 3.8+ 环境:
python3 -m pip install nssh
Docker
docker build -t nssh -f docker/Dockerfile https://github.com/Vrolist/nssh.git
docker run -d --name nssh_tunnel --restart=unless-stopped \
-e REMOTE_PORT=8080 \
-e LOCAL_HOST=127.0.0.1 \
-e LOCAL_PORT=80 \
-e USERNAME=user \
-e SERVER_NODE=your-server.com \
-e SERVER_PORT=22 \
-e PASSWORD=your_password \
nssh
源码编译
git clone https://github.com/Vrolist/nssh.git
cd nssh
go build -o nssh main.go
官网下载
内网云优化的多连接客户端:https://www.neiwangyun.net/client/download/
备注
通过 npm / pip / Docker / 源码安装的均为开源标准版;官网下载版针对内网云服务深度优化(接管升级等),命令用法一致。
架构设计
┌──────────────────────────────────────────────┐
│ CLI │
│ 解析参数 → 派发到守护进程 │
└──────────────────────┬───────────────────────┘
│ Unix socket / 命名管道
┌──────────────────────▼───────────────────────┐
│ 守护进程 │
│ 后台进程,管理多个 Worker │
│ - 启动/停止/重启隧道 │
│ - 状态查询、日志查看 │
│ - 断线自动重连 │
└──────────────────────┬───────────────────────┘
┌─────────────┼─────────────┐
▼ ▼ ▼
Worker 1 Worker 2 Worker N
(user@svr:8080) (user@svr:8081)
nssh 与 ssh -R 对比
| 特性 | ssh -R | nssh |
|---|---|---|
| 守护进程模式 | 需依赖外部工具(如 systemd) | 内置支持 |
| 多连接管理 | 需启动多个独立进程 | 单守护进程统一管理 |
| 断线重连 | 需额外配置 | 内置自动重连 |
| 连接管理命令 | 无 | 支持 list / stop / restart / log |
| 资源占用 | 较高 | 较低 |
许可证
MIT License。