跳到主要内容

nssh 客户端完整部署教程

nssh 是内网云官方 SSH 反向代理客户端,专为内网穿透优化。零依赖,下载即用,二进制仅 5-7MB。

一、下载安装

方式一:官网下载(推荐)

访问 内网云客户端下载页,根据你的系统选择对应版本:

平台文件名
Linux x86_64nssh-client-linux-x86_64-vX.X.X
Linux arm64nssh-client-linux-aarch64-vX.X.X
macOSnssh-client-darwin-x86_64-vX.X.X / darwin-arm64
Windowsnssh-client-windows-x86_64-vX.X.X.exe
OpenWrt / EdgeOS对应架构版本

下载后赋予执行权限:

chmod +x nssh_client
sudo mv nssh_client /usr/local/bin/

方式二:内部仓库下载

如果你在公司内网环境,可以从内部文件存储服务下载(更快):

# 请联系管理员获取内部仓库地址和凭据,然后使用以下命令下载:
# curl -o /usr/local/bin/nssh_client "<内部仓库下载链接>"
chmod +x /usr/local/bin/nssh_client

二、快速测试(前端模式)

先用前台模式测试连通性:

nssh_client -R <远程端口>:127.0.0.1:<本地端口> <用户名>@<服务器> -p <SSH端口> --passwd <密码>

示例: 把本地 8080 端口的 Web 服务映射到内网云远程 80 端口:

nssh_client -R 80:127.0.0.1:8080 your_username@gz2.neiwangyun.net -p 22 --passwd your_password

看到以下日志说明隧道建立成功:

INF Connected to gz2.neiwangyun.net:22
INF Tunnel established successfully! Remote listener: 0.0.0.0:80, Local target: 127.0.0.1:8080

💡 按 Ctrl+C 即可停止前端模式。

三、守护进程模式(后台运行)

生产环境推荐使用 --daemon 参数在后台运行:

nssh_client --daemon -R 80:127.0.0.1:8080 your_username@gz2.neiwangyun.net -p 22 --passwd your_password

四、连接管理命令

命令说明
nssh_client --list查看所有隧道连接状态
nssh_client --restart <ID>重启指定连接
nssh_client --stop <ID>停止指定连接
nssh_client --stop-all停止所有连接
nssh_client --takeover新版本接管旧版本(平滑升级)
nssh_client --takeover-force强制接管,无需确认

连接 ID 格式:用户名@服务器地址:端口,例如 buladou1146@gz2.neiwangyun.net:22

五、开机自启(持久化部署)

方案一:crontab @reboot(推荐,最简单)

crontab -e
# 添加以下一行:
@reboot /usr/local/bin/nssh_client --daemon -R 80:127.0.0.1:8080 your_username@gz2.neiwangyun.net -p 22 --passwd your_password

✅ nssh daemon 自身支持断线自动重连,crontab 只负责开机拉起。

方案二:Docker 部署

# docker-compose.yml
version: '3'
services:
nssh:
image: registry.cn-shanghai.aliyuncs.com/private-project/nwy_client_amd64
restart: always
environment:
- SERVER_NODE=gz2.neiwangyun.net
- USERNAME=your_username
- ASKPASS=your_password
- IP=127.0.0.1
- PORT=8080
- SERVER_PORT=80
network_mode: host
docker compose up -d

方案三:Supervisor 部署

[program:nssh]
command=/usr/local/bin/nssh_client --daemon -R 80:127.0.0.1:8080 your_username@gz2.neiwangyun.net -p 22 --passwd your_password
autostart=true
autorestart=true

六、参数速查

参数说明
--daemon守护进程模式(后台运行)
--list列出所有隧道连接及状态
--restart <ID|all>重启指定或全部连接
--stop <ID>停止指定连接
--stop-all停止所有连接
--takeover平滑升级(新版接管旧版)
--takeover-force强制接管
-R X:A:B反向隧道:远程端口 X → 本地 A:B
-pSSH 服务器端口
--passwd / -PSSH 密码

七、避坑指南

1. 💡 建议用 127.0.0.1

# nssh 和服务在同一台服务器(推荐)
nssh_client --daemon -R 80:127.0.0.1:8080 ...

# nssh 和服务在不同服务器(局域网)
nssh_client --daemon -R 80:192.168.2.23:8080 ...

💡 nssh 和服务跑在同一台服务器时,用 127.0.0.1 最简单。如果 nssh 在另一台机器上,用目标服务器的局域网 IP 即可。

2. 🚨 --list 显示 offline 不一定是真 offline

--list 状态可能不准确,用以下方法验证:

# 方法1:lsof 查看 TCP 连接状态
lsof -i -P -n | grep nssh
# 看到 ESTABLISHED → 隧道实际已通

# 方法2:直接访问公网测试
curl -s -o /dev/null -w "%{http_code}" http://你的公网域名:端口

3. 🚨 公网 80/443 不通 ≠ 隧道问题

隧道只负责 SSH 反向连接。公网 80/443 端口可能被 CDN 或反向代理占用。先用自定义端口(如 12080)测试隧道本身是否通。

八、版本升级

nssh 支持平滑升级,无需停服:

# 1. 下载新版二进制
# 2. 直接运行接管
nssh_client --takeover
# 或强制接管
nssh_client --takeover-force

新版会自动接管旧版的隧道连接,实现零停机升级。

九、常见问题

问题解决方法
连不上服务器前台模式(不加 --daemon)运行看日志
--list 显示 offlinelsof 确认 TCP 状态,不要只看 --list
旧连接没断开重复执行同连接 ID 会自动替换
MinIO 下载空文件MinIO 不支持匿名 HTTP 下载,必须走 S3 SDK
升级版本--takeover,不要直接 kill 再启动