问题背景:
在某个局域网下的嵌入式设备,比如安装ubuntu的树莓派在使用ssh进行远程调试的时候,需要和被调试设备在同一个局域网下,这给调试带来极大的麻烦。是否有方法可以让公网设备也可以通过ssh远程连接设备完成调式。
方法提出:
1. 为嵌入式设备分配唯一的全局的IP地址,也就像我们平时租赁的服务器一样,通过TCP/IP协议可以直接访问,但是这种方法需要向网络运营商提交全局IP的申请,花费高。
2. 使用VPN服务器作为媒介,连接内网和公网,这种方法操作麻烦,可以还会涉及违法。
3. 使用免费内网穿透,操作简单,零成本。
最终方法:
使用免费内网穿透,这里我们使用cpolar,cpolar是一种安全的内网穿透云服务,它将内网下的本地服务器通过安全隧道暴露至公网。使得公网用户可以正常访问内网服务,下图官网的介绍,网址:cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站
建立通信隧道:内网穿透工具会在内网设备和公网设备之间建立一个加密的通信隧道,以便外部用户可以通过该隧道与内网设备通信。
端口映射:在内网穿透过程中,需要将内网设备的某个端口映射到公网上的某个端口。这样,外部用户通过访问公网端口就可以访问到内网设备的服务。
穿透认证和授权:为了确保安全性,内网穿透工具通常会实现一定的认证和授权机制,确保只有授权的用户可以访问内网中的服务
最终实践:
这里操作按照cpolar官方给出的操作文档,现在嵌入式设备配置cpolar环境,开启对应的网络服务和端口号,eg: cpolar tcp 22,这是嵌入式设备开启一个进程,并且将内网下tcp服务的端口号映射到公网下,这是刷新cpolar官网下的隧道状态,可以看到映射的公网端口号和临时IP,根据这些信息可以完成公网下访问内网下的设备。