什么时候使用 ssh-keyscan 而不是 ssh 来管理 known_hosts 更好?

什么时候使用 ssh-keyscan 而不是 ssh 来管理 known_hosts 更好?

何时执行

ssh -i id_rsa_something [email protected]

出现:

The authenticity of host '192.168.1.2 (192.168.1.2)' can't be established.
ECDSA key fingerprint is SHA256:ABCABC [fixed/changed].
Are you sure you want to continue connecting (yes/no)?

如果我输入是,我可以通过 SSH 访问远程服务器。因此,到目前为止,远程连接的 SSH 配置均按预期工作。此外,在文件中.ssh/known_hosts,在客户, 加入:

192.168.1.2 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNo...

因此客户端通过.ssh/known_hosts文件知道有一个可信任的服务器,而服务器端通过文件.ssh/authorized_keys存在客户端公钥的副本。到此为止,客户端和服务器之间可以放心地建立安全连接。

我认为这是建立客户端和服务器之间的连接的唯一逻辑方法(我们称之为首次接近)。我的意思是,生成密钥,将公钥复制到服务器,最后按照共享的第一个命令进行连接(即使 SSH 代理是否正在运行)。

现在,我在 StackExchange 分支中研究了如何在客户端删除指纹,它通过影响文件并生成文件的ssh-agent -R hostname命令来工作,但是在发布的解决方案中出现了多少次额外的信息.ssh/known_hostsknown_hosts.oldssh-keyscan在文件中添加主机的指纹- 我对此进行了研究,教程只教如何使用 - 我找不到关于何时强制.ssh/known_hosts使用的确凿理由ssh-keyscan首次接近

答案1

将主机密钥添加到known_hosts显式使用的结果ssh-keyscan或通过连接使用的结果ssh在技术上是相同的。

虽然ssh-keyscan实际上并没有给您机会验证主机密钥是否有效。因此,您必须事后检查 的内容known_hosts,如果发现它是恶意服务器的密钥,则最终删除该密钥。还known_hosts包含一个完整密钥,您很难验证。相反,ssh您显示主机密钥的指纹,这更容易验证。

相关内容