1

我正在寻找类似于以下内容的 Twisted Conch 服务器/客户端 SSH 应用程序:

客户端 <---Key1---> 服务器/客户端 <---Key2---> 服务器

我猜它就像一个 SSH MITM 或命令代理。

我已经阅读了类似 Twisted 相关问题的答案,例如: Twisted 服务器-客户端数据共享 ,并且我了解传递客户端/服务器数据背后的理论。

我不确定的部分是用户身份验证。我想通过我的扭曲海螺应用程序将第一个客户端的登录详细信息传递到端点服务器。有没有办法做到这一点?

此外,是否可以进行单独的 SSH 密钥协商,然后在服务器和客户端之间传递所有数据,包括凭据和键入的任何命令?

4

1 回答 1

0

不幸的是,这比看起来要复杂一些。SSH 经历了一些痛苦来尝试避免这种 MITM。如果您不使用相同的密钥协商,则publickey身份验证将不会成功,因为您要签名的字符串在连接的两端都不同(有关更多信息,请参阅RFC第 7 节)。

不过,密码身份验证应该仍然可以正常工作。最简单的方法是创建一个twisted.conch.ssh.session.SSHSession子类,它在方法上侦听数据包packetReceived并将它们转发到相应的transport.sendPacket.

于 2013-08-01T02:36:46.063 回答