我开发了一个运行 Linux 的嵌入式应用程序来进行远程 I/O 控制。该应用程序打开与我的服务器的套接字连接,定期传达 I/O 的状态并获取要在本地执行的命令。出于调试目的,我希望能够连接到在嵌入式系统上运行的 ssh 服务器。我无法更新路由器配置以建立端口转发。我需要的是能够使用嵌入式系统建立的套接字访问其 ssh 服务器。我不知道这是否可行以及如何做到这一点。有人可以给我一个建议吗?提前谢谢您。Marco
答案1
不可能将现有的插座用于其他用途。这就像在高速公路上驾驶火车一样 - 它根本行不通(或者说,如果不先挖开高速公路并铺设铁轨,它就行不通)。
那么您有什么选择?
嗯,有几个。
一种方法是在您的嵌入式系统所连接的服务器上运行 VPN 服务器。这将有效地穿透您的路由器并创建一个将您的嵌入式系统和服务器连接在一起的新网络。然后您可以通过该新网络进行 ssh。我经常使用虚拟隧道1因为它重量轻,有许多不同的配置选项(包括非常好的虚拟以太网2)。
您可以让嵌入式系统通过其现有通道从服务器检索命令,如果获取到正确的命令,则打开到服务器的 SSH 连接,包括 SSH 端口转发。这将在嵌入式系统和服务器之间打开一个未绑定的 TCP 连接,然后您可以随意使用它。例如,它可以将服务器上的本地套接字连接到在嵌入式系统上运行的 SSH 守护程序,这样您就可以通过 ssh 连接到本地主机,但使用不同的端口号,它会将该连接转发到嵌入式系统。
我最喜欢使用 VPN,因为它开辟了一个全新的可能性世界,而不仅仅是一个 SSH 隧道。
1虚拟隧道可在标准 Debian / Ubuntu / etc apt 存储库中使用。
2我将台式机和笔记本电脑连接到两台服务器,这两台服务器也互相连接,使用虚拟隧道使用虚拟以太网(轻敲)和 TCP 连接,以及斑驴用于 BGP 路由。当我外出时,我的笔记本电脑可以与我的台式机通信,并使用我的手机上网,就像它们在同一个房间里一样。哦,而且一切都是加密的。