在做一个个人研究项目时,我想知道:为什么 SSH 会进行自己的机制协商而不是使用 SASL?起初我以为这可能是为了确保整个会议的机密性,但是看看维基百科页面看起来应该由“传输”层来处理,就像 TLS+SASL 中的情况一样。
我的问题是:是否有技术原因导致 ssh 不能只进行密钥交换,然后在设置通道之前通过隧道运行 SASL 协商?
答案1
SSH 实现不能使用 SASL 和 TLS,因为那样它们将不再遵循 SSH 协议。
SSH 协议不使用 SASL,因为它早于它,或者至少是广泛采用它。在 SSH 易于使用并广泛使用之后,人们对制作一些功能与 SSH 相同但使用 SASL 和 TLS 的东西并没有太大兴趣。
但可以通过使用 SASL 和 TLS 来实现“安全 telnet”。
维基百科对此主题是这样描述的:“与其他早期互联网协议一样,Telnet 协议的扩展提供了传输层安全 (TLS) 安全性以及简单身份验证和安全层 (SASL) 身份验证,可以解决上述问题。但是,大多数 Telnet 协议实现不支持这些扩展;而且人们对实现这些扩展的兴趣相对较小,因为 SSH 足以满足大多数用途。”