需要设备
设备 | IP | 用户名 | 备注 |
---|---|---|---|
树莓派 | 192.168.xxx.xxx | pi | 在局域网中,需在同一网段才可访问 |
服务器【阿里云】 | 47.100.xxx.xxx | team | 在公网中,任意设备可以通过IP访问 |
PC | 可以直接访问服务器,无法直接访问树莓派 |
解决的问题
需要解决的问题是通过PC访问不在同一网段内的树莓派。
首先PC是无法直接访问树莓派的,因为两个设备不在同一网段,但是树莓派和PC都可访问阿里云服务器,那么我们可以将阿里云服务器作为跳板,通过反向代理+正向代理的方法,使PC和树莓派实现间接访问。
解决方案
通过SSH的反向代理和正向代理,只需简单的三步就可实现外网访问局域网。
- 在树莓派上做反向代理,使阿里云可以反向访问树莓派。
- 在阿里云上做正向代理,用作本地端口转发,使公网IP映射到本地IP。
- PC通过SSH连接树莓派
环境需求
所有设备需安装SSH客户端(目前Windows,MAC,Linux系统一般都自带SSH客户端,如需安装可自行百度)
SSH参数解释
-f 后台运行
-C 允许压缩数据
-N 不执行任何命令
-R 将端口绑定到远程服务器,反向代理
-L 将端口绑定到本地客户端,正向代理
实际步骤
-
在树莓派上操作,建立树莓派到阿里云的反向代理。
port为阿里云服务器开放的端口【范围在4711~4811】
$ ssh -fCNR port:localhost:22 team@47.100.xxx.xxx
根据提示输入密码。
完成阿里云与树莓派上的【port】端口与22端口绑定。
-
在阿里云上操作,做这一步是因为绑定后的端口只支持本地访问,还不支持通过公网IP访问。
$ ssh -fCNL "*:port:localhost:port" localhost
根据提示输入密码。
将公网IP映射到本地IP,现在可以通过公网访问树莓派了。
-
在PC上操作,使用SSH从PC间接访问到树莓派。
用户名为树莓派用户名
IP为阿里云服务器IP
$ ssh -p port pi@47.100.xxx.xxx
根据提示输入密码。
至此我们已经解决了PC访问不在同一网段内的树莓派的问题。
网友评论