我在 Windows 10 上工作。
我使用 PuTTY ssh 进入物理:CentOS7、虚拟机:CentOS6,7 和 Ubuntu 16。
第一次 ssh 从 Win TO vb:Ubuntu 时,我得到的是常规 ole 服务器/指纹,而不是已知主机弹出窗口。没什么大不了。但我想知道:我如何确认不存在“中间人”?
最简单的情况:我坐在目标(从这里开始称为“本地”)前面并直接检查其指纹。
事实证明:尝试在 Ubuntu 16 上使用ssh-keygen -lf <filename>
(file /etc/ssh/ssh_host_rsa_key.pub
:) 本地查看公共机器密钥指纹给了我一个指纹,我无法与来自远程 ssh 的任何警告进行匹配。
在任何地方,我的意思是:
- 该字符串不是 PuTTy 弹出窗口中出现的内容,并且
"2048 SHA256:NPAUL **** 4QQ [email protected] (RSA)"
当我将 pub 密钥文件复制到 CentOS6 或 7 并
ssh-keygen -l -f
对其运行时,它们彼此匹配,但与ssh-keygen
在 Ubuntu 上本地运行的不匹配(例如,实现不同)。2a.这样做
scp
只是我认为可以测试的一种方式。
问题的关键是:在我告诉它“是”我会接受之前,如何确认 ssh ui 显示的指纹是正确的?
指纹局部视图(大约):
"2048 SHA256:NPAULv10 **** lic4QQ [email protected] (RSA)"
远程查看指纹(使用Win PuTTy):
"The new rsa2 key fingerprint is: ssh-rsa 2048 ce:e9:43 **** :cb"
远程查看指纹(使用CentOS6&7终端):“2048 ce:e9:43 **** :cb” 文件名(RSA)
笔记:
- 远程查看的指纹中有冒号。
- bubblebabble 摘要(来自
-B
)是匹配的,但它们不是指纹。 - 本地(
ssh-keygen -lf
即/etc/ssh*.pub
:*dsa_key.pub、*ecdsa_key.pub、*ed25519_key.pub 和 *rsa_key.pub)也没有输出与远程看到的指纹匹配的内容。 - 我可能忽略了一些东西,我确实检查了 std 手册页、ubuntu 文档...不知道我错过了什么。
答案1
使用开关-E
切换到ssh-keygen
:
ssh-keygen -l -f -E md5
这在最新的 OpenSSH 版本中可用,并打印“旧”MD5 指纹,与 PuTTY 相同。