我想使用 Twisted 通过 SSH 隧道发出 HTTP 请求。我见过使用 Twisted 设置 SSH 本地端口转发的示例,但这不是我想要的。
相反,在我看来应该可以使用 Twisted 将 HTTP 流量直接包装在 SSH 隧道内 - 即。无需设置 Twisted 来监听本地端口以转发流量。
我已经检查了 Twisted Conch 命令行脚本如何在 conch.ssh.forwarding 中执行本地端口转发。是否应该以某种方式与 HTTP 客户端集成?或者,另一方面,我读到 SSHChannel 支持twisted.internet.interfaces.ITransport 接口(interface),因此可以将其提供给协议(protocol)以通过安全连接运行它们?然后是 Twisted 中的新端点 API:我想知道从 ssh 服务器开始传输流量的端点是否有意义?
还是别的什么?
最佳答案
I wonder if an endpoint for tunneling traffic from the ssh server onwards would make sense?
这很有意义。
有一个端点将协议(protocol)连接到使用 Conch 远程运行的命令的 stdio - twisted.conch.endpoints.SSHCommandClientEndpoint
。和development has started (但似乎停滞了)在使用 Conch 将协议(protocol)连接到远程子系统(例如 sftp)的端点上。使用 Conch 通过隧道连接连接到远程地址的端点将是一个很好的补充。
开始实现SSHSubsystemClientEndpoint
的分支可能是一个有用的东西,可以了解编写这个新端点所涉及的内容。在该分支中可能还开始了有用的重构,可以更轻松地添加这样的新端点(因为该分支恰好添加了第二个海螺端点,并且可能必须做一些工作才能使第一个海螺端点中的一些代码更容易重新编写)可用)。
关于python - 如何使用 Twisted 在 SSH 内建立任何 Twisted 协议(protocol)(例如 HTTP)隧道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23525450/