实验项目:
在外网通过sftp去访问一个内网的设备上的文件。
实验准备:
2台电脑分别做服务端和客户端:
服务端 - ubuntu 22.04,安装ssh-server,用以模拟NAS设备
客户端 - windows,xftp软件
实验步骤:
服务端:
1,服务端电脑先安装ssh-server。
sudo apt-get install openssh-server
2,服务端开启Tunnel Server。
流程可以参考:基于P2PTunnelAPIs和TCPIP协议开发NAS(或者摄像头)-设备端
demo可以参考:SDK目录/Sample/Linux/Sample_P2PTunnelAPIs
客户端:
1,客户端先安装xftp软件。
略
2,客户端启动Tunnel Agent。
流程可以才参考:基于P2PTunnelAPIs和TCPIP协议开发NAS(或者摄像头)-APP端
demo可以参考:SDK目录/Sample/Windows/Sample_P2PTunnel (也可以联系我们索要已经编译好的客户端)
假设上面的流程已经跑通,如果通过xftp访问到我们的服务端呢?
我们知道ssh默认是使用22作为端口的,通常我们可以在局域网内通过局域网IP+22端口去访问ssh;但是在外网的情况下,我们已经无法再通过局域网IP去访问服务端了。
那我们需要怎么去设定参数呢?
其实非常简单,只需要把局域网IP换成127.0.0.1,端口换成客户端demo里面映射时的本地端口即可。
本程序我们使用10001端口去映射ssh server的22端口:
接下去在xftp里面添加一个连接:

填写完成后,即可添加连接和访问服务端了:

上传文件:

下载文件:

Tips:
使用http、ftp、rtsp+P2PTunnelAPIs的时候,对接方法跟上面的方法基本一致,设备端基本不需改动,只需要把P2PTunnelServer启动;而APP端在启动P2PTunnelAgent后,在自己的程序里面,把IP换成127.0.0.1,端口换成agent里面映射的本地端口就行了!