什么时候执行
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_hosts
文件并生成known_hosts.old
文件和工作的命令,但在发布的解决方案中出现了多少次要ssh-keyscan
添加的额外信息文件中主机的指纹.ssh/known_hosts
- 我对此进行了研究,教程只教如何使用 - 我找不到关于何时强制使用第一种方法的ssh-keyscan
可靠理由
将主机密钥添加到
known_hosts
显式使用ssh-keyscan
或通过连接使用ssh
的结果在技术上是相同的。虽然
ssh-keyscan
并没有真正让您有机会验证主机密钥是否有效。因此,您必须事后检查 的内容,known_hosts
如果结果证明它是恶意服务器的密钥,则最终将其删除。还known_hosts
包含一个完整的密钥,您几乎无法验证。相反,ssh
它会向您显示主机密钥的指纹,这更容易验证。