2014-05-07 65 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端點的一些代碼更容易重新編譯)可以使用)。