如何通过SSH为不同网络上的设备设置python,telnet代理?

时间:2011-12-01 20:48:10

标签: python proxy ssh telnet

概述:

我将本地网络上的设备连接到位于外部网络上的计算机。我想创建一个软件程序,允许我从不同网络上的计算机无缝连接到设备。出于这个问题的目的,我创建了一张图片来帮助描述网络流量。我需要帮助的是我需要为这个问题开发解决方案所需的python包。

详细说明:

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

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

我有一个设备(DEVICE1)通过LOCAL(IP地址:10.0.0.157)连接到SOMESERVER。 我有另一个设备(DEVICE2)通过LOCAL(IP地址:10.0.0.158)连接到SOMESERVER。 DEVICE(x)运行linux。我在DEVICE(x)上有python,如果需要,我可以安装一个纯python包。但是,我没有能力编译DEVICE(x)。

我可以使用SSH通过ROUTER1和ROUTER2通过互联网连接SOMESERVER和MYPC。我可以使用Telnet通过本地网络(LOCAL)在SOMESERVER和DEVICE1之间建立连接。我可以使用Telnet通过本地网络(LOCAL)在SOMESERVER和DEVICE2之间建立连接。

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

这是一张有助于解释上述问题的图片: Visual Explanation of the Problem

解决方案:

我认为我想要的是如下。我需要帮助了解细节以及我可能需要的软件包。

第1部分:拨号主页客户端和服务器

为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

未来的稳健性

将来日期,telnet连接将被替换为SSH客户端(DEVICE(x)上的保管箱)。

结束

我认为以上内容将允许MYPC“无缝连接”,但我不知道如何组合这些程序的细节。我已经知道如何使用Innosetup和/或py2exe打包python程序。我希望看到的是指向解决方案的不同部分的链接,因此我可以将它们全部拉到一起。然后我可以发布它。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我必须承认,我并没有完全遵循你的所有描述,特别是“拨号主页”客户端/服务器部分。但是,您的图表似乎足以让您理解。

  1. 在“router2”上设置端口转发,将转发的SSH端口转发到Windows服务器。
  2. 编写一个在Windows服务器上运行的Python程序(您可能会发现paramiko有帮助),侦听SSH连接,并打开与后端设备之间的telnet连接。
  3. 这对我来说似乎已经足够了。如果你对Windows服务器有一些奇怪的限制,只能在删除它之前运行一次可执行文件,这似乎是另一个要解决的问题,与这个隧道问题没有关系。