我正在寻找类似于以下内容的Twisted Conch服务器/客户端SSH应用程序:
客户< --- Key1 --->服务器/客户端< --- Key2 --->服务器
我想这就像是一个SSH MITM或命令代理。
我已阅读类似Twisted相关问题的答案,例如: Twisted server-client data sharing 我理解传递客户端/服务器数据背后的理论。
我不确定的部分是用户身份验证。我想通过我的扭曲海螺应用程序将登录详细信息从第一个客户端传递到端点服务器。 有没有办法做到这一点?
此外,是否可以进行单独的SSH密钥协商,然后在服务器和客户端之间传递所有数据,包括凭证和键入的任何命令?
答案 0 :(得分:0)
不幸的是,这比看起来要复杂一些。 SSH经历了一些痛苦,试图避免这种MITM。如果您不使用相同的密钥协商,则publickey
身份验证将不会成功,因为您要签名的字符串在连接的两端都不同(有关详细信息,请参阅RFC部分7)。
密码验证应该仍然可以正常工作。最简单的方法是创建一个twisted.conch.ssh.session.SSHSession子类,它监听packetReceived
方法上的数据包并将它们转发到相应的transport.sendPacket
。