与错误站点的 SSH 会话是否存在安全隐患?

信息安全 SSH
2021-08-22 18:14:33

几分钟前,我尝试通过 ssh 连接到我办公室的服务器。由于它是一个新服务器,我的公钥尚未在那里设置,所以我不得不手动输入我的密码。

在尝试登录三遍后,我注意到我输入了错误的域名——两个字符调换了。我实际上试图登录的服务器不在我的办公室,而是在其他地方!

我的问题:在这种情况下,SSH 协议会暴露我的密码吗?换句话说,如果该服务器是故意以某种方式设置来捕捉这样的错误,它可以做到吗?

无论如何我都会去更改那个密码,但我想知道那次事故是否真的有风险。欢迎任何见解。

3个回答

是的,远程服务器现在可以访问您的密码。而且,如果他们已将其设置为记录该密码(这在我所知道的任何 SSH 产品中都不是默认密码),那么您应该比现在更快地更改密码 :)

是的。包含您的密码的数据包被加密,因此只有预期的服务器可以读取传入的密码,但是一旦数据包被处理,您的密码就在那里。ssh 客户端没有传输您密码的哈希值(我认为是这样,所以我检查了源代码并发现不是这样),它是您的整个密码。

当然,没有合法的 sshd 会记录密码,但同样当然,没有人应该信任某个随机的未知服务器。

相关参考文档是RFC 4252 - The Secure Shell (SSH) Authentication Protocol 的第 8 节

这个的相关部分说:

密码认证使用以下数据包。所有
实现都应该支持密码认证。

  byte      SSH_MSG_USERAUTH_REQUEST
  string    user name
  string    service name
  string    "password"
  boolean   FALSE
  string    plaintext password in ISO-10646 UTF-8 encoding [RFC3629]

请注意,即使在数据包中传输明文密码,整个数据包也会被传输层加密。

因此,正如这里的其他人所观察到的那样:好消息是任何窃听交易所的人都不应该看到您密码的明文;坏消息是,您已经通过您的操作向您尝试登录的 SSH 服务器泄露了密码,建议您更改该密码。更好的是,改用公钥认证