概述:

我有一台设备位于本地网络上,而一台计算机位于外部网络上。我想创建一个软件程序,使我可以从其他网络上的计算机无缝连接到设备。出于这个问题的目的,我创建了一张图片来帮助描述网络流。我需要帮助的是开发此问题解决方案所需的python软件包。

细节:

我有一台计算机MYPC(IP地址192.168.0.168)连接到通过代理服务器(ROUTER1)运行的Internet。我可以完全控制运行Linux的MYPC环境。

我有第二台计算机SOMESERVER(IP地址192.168.1.168)连接到通过代理服务器(ROUTER2)运行的Internet。此外,SOMESERVER(IP地址10.0.0.159)也连接到本地网络(LOCAL)。 SOMESERVER正在运行Windows。我对SOMESERVER的控制非常有限:我可以将可执行文件发送到SOMESERVER,该可执行文件在删除之前可以运行一次。我最初不知道ROUTER2的互联网/世界IP地址。

我有一个通过本地(IP地址:10.0.0.157)连接到SOMESERVER的设备(DEVICE1)。
我有另一台设备(DEVICE2)通过本地(IP地址:10.0.0.158)连接到SOMESERVER。 DEVICE(x)运行linux。我在DEVICE(x)上安装了python,并且可以根据需要安装一个纯python软件包。但是,我没有为DEVICE(x)进行编译的能力。

我可以在ROUTER1和ROUTER2上使用SSH通过Internet在SOMESERVER和MYPC之间进行连接。我可以使用Telnet通过本地网络(LOCAL)在SOMESERVER和DEVICE1之间进行连接。我可以使用Telnet通过本地网络(LOCAL)在SOMESERVER和DEVICE2之间进行连接。

我想向SOMESERVER发送一个程序,该程序允许我通过SSH和Telnet从MYPC无缝访问DEVICE1和DEVICE2。另外,我希望该程序运行python。

这是一张有助于解释以上问题的图片:

解:

我想我想要的如下。我需要详细信息以及可能需要哪些软件包来帮助实现它。

第1部分:Dial Home客户端和服务器

为MYPC创建一个“拨号家庭”服务器程序(DIAL_HOME_SERVER),该程序侦听任何一个拨号家庭,然后将使用SSH“拨号”到任何“拨号家庭”的SOMESERVER。

为SOMESERVER创建一个“拨号主页”客户端程序(DIAL_HOME_CLIENT),该程序作为软件包的一部分下载

第2部分:代理服务器

为SOMESERVER创建ssh到telnet代理服务器程序(PROXY_SERVER),该程序侦听来自MYPC的连接,并将其汇集到DEVICE(x)的telnet连接中。

多亏了Greg Hewgill,听起来我可以使用Paramiko将SOMESERVER上的PROXY_SERVER代码组合在一起。看来Paramiko也需要PyCryto,并且可以找到Windows二进制文件here

future 的稳健性

将来,telnet连接将替换为SSH客户端(DEVICE(x)上的下拉框)。

收盘时

我认为以上内容将使MYPC“无缝”连接,但是我不知道如何组合这些程序的详细信息。我已经知道如何使用Innosetup和/或py2exe打包python程序。我很想看到的是指向解决方案不同部分的链接,这样我就可以将它们组合在一起。然后我可以发布它。

提前致谢!

最佳答案

我必须承认,我并没有完全按照您的描述进行操作,尤其是“拨号主页”客户端/服务器部分。但是,您的图似乎足以理解。

  • 在“router2”上设置端口转发,以将传入的SSH端口转发到Windows服务器。
  • 编写一个Python程序(您可能会发现paramiko很有帮助),该程序可在Windows服务器上运行,侦听SSH连接,并在后端打开与您其中一个设备的telnet连接。

  • 这对我来说似乎足够。如果您对Windows服务器有一个奇怪的限制,那就是只能在删除可执行文件之前运行一次可执行文件,这似乎是要解决的另一个问题,该问题与该隧道问题并没有真正的关系。

    关于python - 如何通过SSH为其他网络上的设备设置python,telnet代理?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8348073/

    10-13 06:40