python - 如何使用 Twisted 在 SSH 内建立任何 Twisted 协议(protocol)(例如 HTTP)隧道?

标签 python ssh twisted twisted.conch

我想使用 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/

相关文章:

python - Django过滤多个值

python - 如何同步python线程的开始时间?

macos - SSH -L 连接成功,但本地主机端口转发不起作用 "channel 3: open failed: connect failed: Connection refused"

python - Twisted lineReceived 没有被调用

python - 使用 Twisted 端点时可以设置 SSL 上下文选项吗?

python - Windows 10 上的 Kivy。当 kivy 应用程序未获得焦点时,如何单击按钮?

Python 获取 'permission denied' 到 Linux 中的文件

linux - 如何为 "SSH access without a password"配置远程服务器?

bash - 如何通过 ssh 重定向 bash 登录时不需要的输出?

linux - 我如何在 Twisted 中处理 POST 请求?