![SSH - 我如何回答“连接”提示中的“[指纹]”以及它起什么作用?](https://linux22.com/image/1653040/SSH%20-%20%E6%88%91%E5%A6%82%E4%BD%95%E5%9B%9E%E7%AD%94%E2%80%9C%E8%BF%9E%E6%8E%A5%E2%80%9D%E6%8F%90%E7%A4%BA%E4%B8%AD%E7%9A%84%E2%80%9C%5B%E6%8C%87%E7%BA%B9%5D%E2%80%9D%E4%BB%A5%E5%8F%8A%E5%AE%83%E8%B5%B7%E4%BB%80%E4%B9%88%E4%BD%9C%E7%94%A8%EF%BC%9F.png)
我查看了 ssh 的手册页,但还是一无所知。当您使用 ssh 连接到远程主机时,它会显示如下内容:
ssh [email protected]
The authenticity of host '10.11.12.13 (10.11.12.13)' can't be established.
ECDSA key fingerprint is SHA256:CwrcHjdd9349u38rj392fr9j389rj3298rj23.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
我认为:
- 是 - 连接并将指纹写入已知主机文件中
- 否 - 不要连接(显示“主机密钥验证失败。”)
第三个选项 [指纹] 是什么?
答案1
此提示允许您粘贴实际指纹作为响应;ssh 本身会将其与网络上看到的公钥进行比较。如果两者匹配,则答案假定为yes
。
(当然,您应该从合理可信的来源复制指纹 - 而不是从同一条确认消息中复制!)
除了比手动比较更快之外,这还可以避免“模糊指纹”攻击中,假主机密钥具有可见的指纹相似的到真实的(因为人们经常只看第一个和最后一个字母而跳过其余部分)。
此功能是在 OpenSSH 8.0 中添加的。
答案2
扩展@user1686的答案,至少对于我的ssh客户端(OpenSSH_9.0p1,Mac上的LibreSSL 3.3.6)输入不正确密钥令人困惑。它不会显示“密钥不匹配,退出!”之类的消息,而是只会回复“请输入‘是’、‘否’或指纹:”,让您怀疑格式是否正确……
它做{HASH_TYPE}:{HASH_FINGERPRINT}
当输入为“ ”时,接受正确的指纹,例如SHA256:6IwH4s6MTcIsiC6vol79ODXqdFH1E3/qp/fQVj4jZ5q
,AND 正确的密钥类型,在连接过程中先前协商。
如果主机有多种类型,请确保检查正确的密钥!