Как туннелировать любой протокол Twisted (скажем, HTTP) внутри SSH, используя Twisted?
Я хотел бы делать HTTP-запросы через SSH-туннели, используя Twisted. Я видел примеры использования Twisted для настройки переадресации локальных портов SSH, но я не об этом.
Вместо этого мне кажется, что можно использовать Twisted для прямого оборачивания HTTP-трафика внутри туннеля SSH - т.е. без необходимости настраивать Twisted для прослушивания локального порта для пересылки трафика.
Я проверил, как скрипт командной строки Twisted Conch выполняет переадресацию локальных портов, в conch.ssh.forwarding. Должно ли это быть каким-то образом интегрировано с HTTP-клиентом? Или, с другой стороны, я читал, что SSHChannel поддерживает интерфейс twisted.internet.interfaces.ITransport, поэтому он может быть передан протоколам для запуска их через защищенное соединение? Тогда в Twisted есть API конечных точек new-ish: Интересно, имеет ли смысл конечная точка для туннелирования трафика от сервера ssh и далее?
Или что-то другое?
1 ответ
Интересно, имеет ли смысл конечная точка для туннелирования трафика с сервера ssh?
Было бы много смысла.
Существует конечная точка, которая подключает протокол к stdio команды, выполняемой удаленно с помощью Conch - twisted.conch.endpoints.SSHCommandClientEndpoint
, И разработка началась (но, похоже, остановилась) на конечной точке для подключения протокола к удаленной подсистеме (например, sftp) с использованием Conch. Конечная точка для подключения к удаленному адресу через туннельное соединение с использованием Conch была бы отличным дополнением.
Филиал, который начинает внедрять SSHSubsystemClientEndpoint
может быть полезно взглянуть на то, что нужно для написания этой новой конечной точки. Также могут быть полезны рефакторинги, запущенные в этой ветке, которые облегчают добавление новых конечных точек, подобных этой (поскольку ветвь добавляет ровно конечную точку 2-го конча и, возможно, пришлось проделать некоторую работу, чтобы сделать некоторый код из 1-ой конечной точки конча легче годный к употреблению).