我尝试用Twisted编写一个SSH代理,它拦截SSH流量并将其转发到后端SSH服务器。在
在前端,我使用了一个修改过的Conch,下面的代码子类化为SSHSession:
def request_exec(self, data):
cmd,data = common.getNS(data)
log.msg('executing command "%s"' % cmd)
prot = session.SSHSessionClient()
prot.transport = self
pf = _ProtocolFactory(prot)
ep = endpoints.SSHCommandClientEndpoint.newConnection(reactor, cmd,
USER, HOST, port=PORT, password=PASSWORD)
ep.connect(pf)
self.client = prot
return 1
\u ProtocolFactory类如下所示:
^{pr2}$整个系统接受用户的连接,我可以看到它成功地登录到后端。在
我遇到的问题是如何将stdout/stdin通道相互连接。 后端连接上的SSHSession需要连接到前端的SSHSession。我试着把协议作为中间环节,但我不认为这是正确的。在
更新:单向数据传输是通过使用一个自定义协议来实现的,该协议可以转换客户机/服务器功能(因此dataReceived被映射为write,反之亦然:
^{3}$
目前没有回答
相关问题 更多 >
编程相关推荐