2014-05-07 29 views
2

我想使用Twisted在SSH隧道上发出HTTP请求。我见过使用Twisted来设置SSH本地端口转发的例子,但这不是我所追求的。如何在SSH内使用Twisted隧道传输任何Twisted协议(如HTTP)?

相反,在我看来,应该可以使用Twisted将HTTP通信直接包装到SSH隧道中 - 也就是说,而不必设置Twisted在本地端口上侦听转发流量。

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

还是别的什么?

回答

2

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

这会很有意义。

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

开始实施SSHSubsystemClientEndpoint的分支可能是一个有用的东西,可以了解编写此新端点所涉及的内容。在该分支中可能还会有一些有用的重构,使得添加新端点变得更容易(因为分支完全添加了第二个conch端点,并且可能必须做一些工作才能使第一个conch端点的一些代码更容易重新编译)可以使用)。