跳到主要内容

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 -Rnssh
守护进程模式需依赖外部工具(如 systemd)内置支持
多连接管理需启动多个独立进程单守护进程统一管理
断线重连需额外配置内置自动重连
连接管理命令支持 list / stop / restart / log
资源占用较高较低

许可证

MIT License。


相关链接