所属的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统的具体工作过程及有关说明,可以参考前述方法实施例中的对应过程,在此不再赘述。需要说明的是,上述实施例提供的系统,仅以上述各功能模块的划分进行举例说明,在实际应用中,可以根据需要而将上述功能分配由不同的功能模块来完成,即将本发明实施例中的模块或者步骤再分解或者组合,例如,上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块,以完成以上描述的全部或者部分功能。对于本发明实施例中涉及的模块、步骤的名称,仅仅是为了区分各个模块或者步骤,不视为对本发明的不当限定。本领域技术人员应该能够意识到,结合本文中所公开的实施例描述的各示例的模块、方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,软件模块、方法步骤对应的程序可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或内所公知的任意其它形式的存储介质中。为了清楚地说明电子硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以电子硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。术语“包括”或者任何其它类似用语旨在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备/装置不仅包括那些要素,而且还包括没有明确列出的其它要素,或者还包括这些过程、方法、物品或者设备/装置所固有的要素。至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征作出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。以上,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
背景技术:
1、近年来,随着边缘计算和物联网的高速发展,以边缘嵌入式盒子为计算节点的场景也越来越丰富,云原生能力往边缘延伸也成为一种趋势。像kubeedge等云原生的边缘架构以其全方位的“云、边、端一体化”能力,已广泛应用于物联网、边缘云、分布式云等典型边缘计算场景,并覆盖物流、能源、交通、制造、零售、医疗、cdn等诸多行业。
2、目前,常规的k8s部署通常是在一个局域网的服务器集群里进行,我们可以很轻松的通过ssh登录任何一台服务器进行运维。但在边缘云的设备维护中,我们也有远程ssh登入边缘设备排查故障的需求,但由于公网ip资源稀缺等原因,边缘设备都会位于一个局域网子网段内,无法由服务器端主动发起通信请求;对于这种场景的运维通常是派遣运维人员现场操作或者发送远程指令获取运行日志,但所起作用都不尽人意,要么运维人力成本高昂,要么因日志信息不详细而无法定位,同时也会因为无法及时响应带来极差的使用体验。
3、为了解决该痛点,目前主要采用的方法是命令转发和绑定公网ip。命令转发是通过c/s机制,将需要执行的命令发送从网络发送给客户端,由客户端执行后再将结果返回给服务器,但该方法通常无法处理像top、vi等交互命令,使用上有较大的局限性。绑定公网ip虽然完全实现ssh,但公网ip是稀缺且昂贵的,不利于成本控制。
技术实现思路
1、本发明的目的是:提供一种基于隧道的边缘设备ssh运维的实现系统及方法通过将npc以pod容器部署的方式,嵌入云原生体系,从而实现了ssh与云原生的融合,实现了云与边位于不同网络平面且无互联网端口场景下的ssh登入,进而解决上述背景技术中存在的成本无法控制的问题。
2、一方面,本发明实施例提供了一种基于隧道的边缘设备ssh运维的实现系统,包括:第一设备、第二设备、第三设备和控制设备,其中,
3、所述第一设备,设置在公网和/或服务器端,所述第一设备用于接受所述第二设备发送的ssh连接请求;
4、所述第二设备,设置在目标设备的边缘环境中,所述第二设备用于向所述第一设备发送ssh连接请求,所述第二设备还用于在所述第一设备接受所述第二设备发送的ssh连接请求后与所述第一设备建立隧道连接;
5、第三设备,设置在外部设备和/或管理设备中,所述第三设备用于连接所述第一设备的公网ip和端口时,通过所述第一设备与所述第二设备建立的所述隧道连接向所述第二设备发送ssh连接请求;
6、控制设备,设置在所述kubernetes集群的master节点上,所述控制设备用于对所述第二设备下发与启停任务,所述控制设备还用于控制所述第一设备与所述第二设备建立的所述隧道连接的建立和损毁。
7、进一步的,所述第一设备为nps服务端,设置在公网和/或服务器端,所述nps服务端用于接受和处理公网和/或服务器端的ssh的连接请求。
8、进一步的,所述第二设备包括:
9、npc模块,设置在所述目标设备的边缘环境中,所述npc模块用于向所述nps服务端发送ssh的连接请求,所述npc模块还用于在所述nps服务端接受所述npc模块发送的ssh连接请求后与所述nps服务端建立隧道连接;
10、sshd模块,设置在目标设备上,所述sshd模块用于接收来自nps和npc的ssh连接请求。
11、进一步的,所述第三设备为ssh-client模块,设置在外部设备和/或管理设备中,所述ssh-client模块用于向所述nps服务端发起ssh连接请求,所述ssh-client模块还用于与通过所述nps服务端与所述npc模块之间建立的隧道后向所述目标设备中的sshd模块发送ssh连接请求。
12、进一步的,所述nps服务端还用于在接收到所述ssh-client模块发送的ssh连接请求时,通过所述nps服务端与所述npc模块之间建立的隧道发送至所述目标设备中的sshd模块中。
13、进一步的,所述sshd模块还用于接收所述ssh-client模块通过所述nps服务端与所述npc模块之间建立的隧道发送的ssh连接请求后,与所述ssh-client模块进行通信连接。
14、进一步的,所述控制设备为k8s控制器,所述k8s控制器设置在所述kubernetes集群的master节点上,所述k8s控制器用于对所述npc模块的pod进行启停管理,所述k8s控制器还用于根据所述npc模块的pod控制所述nps服务端与所述npc模块之间的隧道的建立或损毁状态。
15、进一步的,所述ssh-client模块为mobaxterm、putty、xshell等一种或多种组合而成的ssh连接请求发起程序。
16、另一方面,本发明实施例还提供了一种基于上述各发明实施例的一种基于隧道的边缘设备ssh运维的实现系统的实现方法,包括:
17、在所述kubernetes的master节点上执行所述nps服务端的安装和启动,并确保所述nps服务端已在所述kubernetes的master节点上运行并监听特定端口;
18、在所述nps服务端进行端口转发规则配置,并确保配置后的所述nps服务端的端口为22端口;
19、控制所述k8s控制器对所述目标设备的边缘环境下发所述npc模块的pod,并通过所述kubernetes的master节点的公网ip与nps服务端建立长连接;
20、控制所述nps服务端将ssh连接请求通过对应的长连接发往目标节点的所述npc模块,并控制所述npc模块转发给ssh-client模块。
21、进一步的,在所述kubernetes的master节点上执行所述nps服务端的安装和启动,并确保所述nps服务端已在所述kubernetes的master节点上运行并监听特定端口时,还包括:
22、将防火墙策略设置为允许公网用户访问nps服务端的ip地址和端口。
23、本发明实施例一种基于隧道的边缘设备ssh运维的实现系统与现有技术相比,其有益效果在于:通过第一设备作为ssh连接请求的接收端,第二设备在边缘环境中向第一设备发出请求,随后建立隧道连接,实现了从公网或服务器端到目标设备的安全ssh连接。这简化了边缘设备的远程维护,提高了系统安全性。其次,第三设备作为外部设备或管理设备,通过与第一设备连接,可以轻松地向第二设备发送ssh连接请求。这为运维人员提供了便捷的远程维护方式,无需直接与目标设备通信,从而降低了维护的复杂性和错误风险。最重要的是,控制设备位于kubernetes集群的master节点上,它具有对第二设备下发与启停任务的能力,还能够管理第一设备与第二设备之间的隧道连接的建立和销毁。这使得整个系统具有动态性,可以根据需要灵活地建立和终止隧道连接,实现随时随地的边缘设备ssh运维。这提高了运维的效率和便捷性,有助于快速响应问题和保持边缘设备的稳定性。