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

标签 python proxy ssh telnet

概述:

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

详情:

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

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

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

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

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

下面这张图可以帮助解释上面的问题: Visual Explanation of the Problem

解决方案:

我想我想要的是如下。我需要有关细节的帮助以及实现它可能需要的软件包。

第 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) 上的 dropbox)。

结束语

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

提前致谢!

最佳答案

我不得不承认,我并没有完全理解您的所有描述,尤其是“拨号主页”客户端/服务器部分。但是,您的图表似乎足以理解。

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

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

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

相关文章:

linux - 在输出之前打印刚刚启动的进程的 pid

包中 Windows 上的 Python 多处理

python - 将列表的子列表拆分为其他子列表

Python:在 urllib2 中禁用 http_proxy

linux - 如何在 Linux 中为另一个用户生成 ssh key ,并在 ansible 中自动生成

JavaScript 文件传输 SSH

python - 字符串格式化类型代码

python - 从 JSON 写入 CSV 时出现 UnicodeEncodeError

java - 如何使用 jsoup 设置正确的字符集以运行抛出代理服务器?

macos - 在 Mac OS X 上获取 'Auto Proxy Discovery' 模式的代理地址