当我登录到 SSH 服务器/主机时,我会被询问其公钥的哈希值是否正确,如下所示:
# ssh 1.2.3.4
The authenticity of host '[1.2.3.4]:22 ([[1.2.3.4]:22)' can't be established.
RSA key fingerprint is SHA256:CxIuAEc3SZThY9XobrjJIHN61OTItAU0Emz0v/+15wY.
Are you sure you want to continue connecting (yes/no)? no
Host key verification failed.
为了能够比较,我之前在 SSH 服务器上使用了这个命令,并将结果保存到客户端的一个文件中:
# ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
2048 f6:bf:4d:d4:bd:d6:f3:da:29:a3:c3:42:96:26:4a:41 /etc/ssh/ssh_host_rsa_key.pub (RSA)
出于某种重要原因(毫无疑问),其中一个命令使用了一种不同的(更新的?)显示哈希的方式,从而极大地帮助了中间人攻击者,因为它需要一个重要的转换来比较这些。
如何比较这两个哈希值,或者更好:强制一个命令使用另一个命令的格式?
该-E
选项ssh-keygen
在服务器上不可用。
SSH
ssh-keyscan & ssh-keygen
另一种方法是将公钥下载到同时支持 MD5 和 SHA256 哈希的系统:
仅回答如何查看本地密钥,这在其他答案中也可见,但可能会被遗漏。至少在 Ubuntu 19.04 版本上,SHA256 是 ssh-keygen 的默认格式:
但是您当然可以明确指定 SHA256:
如果您想改为查看 MD5:
顺便说一句,这是 GitHub 曾经在您帐户上的 SSH 密钥列表中使用的格式。详情:
$man ssh-keygen
。