如何在SSH中使用Twisted隧道传输任何Twisted协议(比如HTTP)?

时间:2014-05-07 18:25:31

标签: python ssh twisted twisted.conch

我想使用Twisted通过SSH隧道发出HTTP请求。我已经看到使用Twisted设置SSH本地端口转发的示例,但这不是我所追求的。

相反,在我看来应该可以使用Twisted直接将HTTP流量包装在SSH隧道中 - 即。无需设置Twisted即可侦听本地端口以转发流量。

我在conch.ssh.forwarding中检查了Twisted Conch命令行脚本如何执行本地端口转发。应该以某种方式与HTTP客户端集成吗?或者,另一方面,我已经读过SSHChannel支持twisted.internet.interfaces.ITransport接口,因此可以将它提供给Protocols以通过安全连接运行它们?然后是Twisted中的new-ish端点API:我想知道从ssh服务器开始隧道传输的端点是否有意义?

还是其他什么?

1 个答案:

答案 0 :(得分:2)

  

我想知道从ssh服务器开始隧道传输的端点是否有意义?

这很有道理。

有一个端点将协议连接到使用Conch远程运行的命令的stdio - twisted.conch.endpoints.SSHCommandClientEndpoint。并且development has started(但似乎停滞不前)在端点上使用Conch将协议连接到远程子系统(例如sftp)。使用Conch通过隧道连接连接到远程地址的端点将是一个很好的补充。

开始实现SSHSubsystemClientEndpoint的分支可能是一个有用的东西,可以了解编写这个新端点所涉及的内容。在该分支中可能还有一些有用的重构,可以更容易地添加这样的新端点(因为分支准确地添加了第二个海螺端点,并且可能需要做一些工作来使第一个海螺端点的代码更容易重新可以使用)。