【问题标题】:Establish SSH Connection Between Two Isolated Machines Using a 3rd System使用第三个系统在两台隔离的机器之间建立 SSH 连接
【发布时间】:2011-06-08 20:05:38
【问题描述】:

我想用 Python 做以下事情:

  1. 计算机 1 启动 SSH 服务器(可能使用 twisted 或 paramiko)
  2. 计算机 1 连接到服务器 1(空闲连接)
  3. 计算机 2 连接到服务器 1
  4. 服务器 1 将计算机 2 的连接转发到计算机 1(连接不再空闲)
  5. 计算机 1 将服务器 1 的连接转发到侦听 SSH 端口(在计算机 1 上)

结果是计算机 2 现在与计算机 1 建立了 SSH 会话,几乎就像计算机 2 启动了一个正常的 SSH 会话(但使用服务器 1 的 IP 而不是计算机 1 的 IP)

我需要这个,因为我无法在计算机 1 的网络上进行端口转发(路由器不支持它)。

【问题讨论】:

  • 哦,我忘了添加 Computer1 是 Windows 机器,Computer2 是 linux 机器。我可以在 Computer2 上使用 'ssh',但 Computer1 上的服务器需要是 python

标签: python networking ssh portforwarding


【解决方案1】:

我会使用ssh 创建从服务器到本地系统的远程隧道 (-R)。如果你坚持用 Python 来做这件事,那么有 subprocess 模块。

【讨论】:

  • 哪个本地系统?计算机 1 还是计算机 2? :\ 不过我会查找 -R 开关
  • “本地系统”是 Computer1。 ssh -R someport:localhost:22 someuser@Server1
  • 天哪,这太棒了!我希望我可以用 Python 做到这一点:\(只需阅读 ssh -R 的手册页)虽然本地系统服务器需要在 python 中 - 无法安装 ssh
  • Twisted Conch 支持这个 SSH 功能。
  • 是的,我在过去大约 15 分钟内一直在研究这个问题。但是我找不到任何示例,所以我仍在阅读。如果您知道任何示例,请链接到它们吗? :)
【解决方案2】:

我发现了如何做到这一点,使用了来自twisted(很难找到)的 conch 示例@http://twistedmatrix.com/trac/browser/trunk/twisted/conch/scripts/conch.py

我将能够从中提取我需要的东西。谢谢!!!!

【讨论】:

    猜你喜欢
    • 2015-07-30
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    相关资源
    最近更新 更多