简体中文

[实验]如何基于P2PTunnelAPIs+ssh搭建一个文件存储服务器?

外网SFTP访问内网设备文件实验指南 | TUTK P2P SDK 开发指南

[实验指南] 外网通过SFTP访问内网设备文件(P2PTunnelAPIs)

Version: 适配SDK全版本 | 适用场景: 外网访问内网NAS/摄像头文件 | 核心特性: P2P隧道穿透、端口映射、跨网络文件传输

一、实验概述

本实验通过 TUTK P2PTunnelAPIs 建立外网与内网设备的P2P隧道,实现外网客户端(Windows)通过SFTP协议访问内网服务端(Ubuntu,模拟NAS设备)的文件。核心逻辑为:内网设备启动Tunnel Server→外网客户端启动Tunnel Agent→建立P2P隧道并映射端口→通过本地映射端口访问内网设备,只需要简单修改代码,就可以快速访问设备。

二、实验准备

需准备2台电脑分别作为服务端(内网设备)和客户端(外网访问端),并完成基础软件安装:

1服务端配置(模拟内网NAS设备)

  • 设备要求:安装 Ubuntu 22.04 系统的电脑(需处于内网环境,如家庭WiFi);
  • 必备软件:
    • openssh-server:提供SFTP文件传输服务;
    • TUTK P2P SDK:需包含 P2PTunnelAPIs 模块(用于启动Tunnel Server)。
  • 参考资源:
    • 开发流程:基于P2PTunnelAPIs和TCPIP协议开发NAS(或者摄像头)-设备端;
    • Demo路径:SDK目录/Sample/Linux/Sample_P2PTunnelAPIs

2客户端配置(外网访问端)

  • 设备要求:安装 Windows 系统的电脑(需处于外网环境,与服务端不在同一局域网);
  • 必备软件:
    • Xftp:Windows 平台SFTP客户端工具(用于文件上传/下载);
    • TUTK P2P SDK:需包含 P2PTunnelAPIs 模块(用于启动Tunnel Agent)。
  • 参考资源:
    • 开发流程:基于P2PTunnelAPIs和TCPIP协议开发NAS(或者摄像头)-APP端;
    • Demo路径:SDK目录/Sample/Windows/Sample_P2PTunnel(可联系官方获取编译好的客户端)。

三、实验步骤(基础环境搭建)

先完成服务端和客户端的基础环境搭建(P2PTunnel 隧道流程),假设该部分已成功跑通,重点说明后续SFTP访问配置:
3.1 服务端基础配置

步骤1安装并启动 ssh-server

执行以下命令安装 openssh-server,启动SFTP服务(默认端口22):
sudo apt-get install openssh-server
 说明:安装完成后,ssh-server 自动启动,可通过 sudo systemctl status ssh 查看运行状态。

步骤2启动 P2PTunnel Server

参考 Demo Sample_P2PTunnelAPIs 的流程,启动服务端的 Tunnel Server,完成与TUTK服务器的注册,等待客户端Tunnel Agent连接。
 说明:Tunnel Server 启动后,需记录设备UID(用于客户端识别目标设备),无需额外配置端口(默认适配ssh-server的22端口)。
3.2 客户端基础配置

步骤1安装 Xftp 软件

下载并安装 Windows 版本 Xftp 软件(官网或第三方正规渠道获取),安装流程略(按默认步骤下一步即可)。

步骤2启动 P2PTunnel Agent 并配置端口映射

参考 Demo Sample_P2PTunnel 的流程,启动客户端的 Tunnel Agent,输入服务端设备UID,建立P2P隧道,并配置端口映射:
核心映射配置(关键!):
  • 目标:将内网服务端的 ssh-server 22端口,映射到客户端本地的 10001 端口;
  • 原理:外网无法直接访问内网IP,通过P2PTunnel Agent将内网设备的22端口映射为客户端本地的10001端口,后续访问本地10001端口即可穿透到内网22端口。

截图1.png

图 1:P2PTunnel Agent 端口映射配置(本地端口10001映射内网22端口)
说明:映射端口可自定义(如10002、10003等),需确保客户端本地端口未被占用。

四、核心配置:通过Xftp访问内网服务端

P2PTunnel 隧道建立成功后,通过Xftp配置连接,关键是替换访问IP和端口(内网IP→本地回环IP,内网端口→映射端口):

步骤1新建 Xftp 连接

打开 Xftp 软件,点击“新建”按钮,弹出连接配置窗口,按以下参数填写:
  • 协议:选择 SFTP(默认基于SSH协议,与ssh-server适配);
  • 主机:填写 127.0.0.1(本地回环IP,对应P2PTunnel Agent的映射端口);
  • 端口:填写 10001(客户端本地映射端口,与Tunnel Agent配置一致);
  • 用户名:填写 Ubuntu 服务端的登录用户名(如root、ubuntu等);
  • 密码:填写 Ubuntu 服务端的登录密码。

截图2.png

图 2:Xftp 连接参数配置(主机127.0.0.1,端口10001)

步骤2建立连接并访问文件

填写完成后点击“连接”,Xftp 将通过本地10001端口穿透到内网服务端的22端口,连接成功后即可看到服务端的文件目录:

截图3.png

图 3:Xftp 成功连接内网服务端,展示文件目录

步骤3文件上传与下载

连接成功后,支持双向文件传输,操作方式与局域网内SFTP访问一致:
  • 上传文件:选中Windows客户端本地文件,拖拽至服务端目录,或点击工具栏“上传”按钮;
  • 下载文件:选中服务端文件,拖拽至Windows本地目录,或点击工具栏“下载”按钮。

截图4.png

图 4:从Windows客户端上传文件至内网服务端

截图5.png

图 5:从内网服务端下载文件至Windows客户端

五、关键说明

核心原理与注意事项

1. 端口映射逻辑:P2PTunnelAPIs 本质是建立外网与内网的虚拟隧道,客户端本地映射端口相当于“隧道入口”,所有发送到该端口的数据都会通过隧道转发到内网设备的目标端口(如22);

2. IP替换原因:127.0.0.1 是本地回环地址,仅本机可访问,通过该地址访问映射端口,可确保数据被Tunnel Agent捕获并转发,避免外网直接访问的限制;

3. 权限要求:服务端ssh-server需允许用户名密码登录(默认开启),若仅允许密钥登录,需在Xftp中配置对应私钥;

4. 连接稳定性:P2P隧道连接成功后,文件传输速度取决于双方网络带宽,建议避免传输超大文件(如超过1GB),可分块传输。

六、拓展Tips(重要!)

多协议适配方案

本实验的SFTP(基于SSH)对接方法可直接复用至其他TCP/IP协议,核心逻辑完全一致:

  • 设备端(内网):无需改动,仅需启动对应服务(如HTTP服务80端口、FTP服务21端口、RTSP服务554端口)和 P2PTunnel Server;
  • 客户端(外网):
    • 启动 P2PTunnel Agent,将内网服务端口映射为本地端口(如HTTP 80→本地10002);
    • 在对应客户端软件中,将访问IP改为 127.0.0.1,端口改为本地映射端口(如10002),即可实现外网访问。

示例:外网访问内网HTTP服务(80端口)→ 映射本地10002端口 → 浏览器访问 http://127.0.0.1:10002

即刻开启您的物联网之旅

联系解决方案专家
Kalay App
资讯安全白皮书
全球专利布局
解决方案
新闻动态
公司动态
行业资讯
媒体报道
永续发展
经营者的话
社会参与
环境永续
公司治理

+86 755 27702549

7×24小时服务热线

法律声明 隐私权条款

关注“TUTK”

TUTK服务尽在掌握

© 2022 物联智慧科技(深圳)有限公司版权所有粤ICP备14023641号
在线咨询
扫一扫

TUTK服务尽在掌握

全国免费服务热线
+86 755 27702549

返回顶部