验证远程主机SSH指纹

Last modified date

大多数时候我们通过使用SSH链接远程主机,第一次登录的时候,远程主机会给出自己机器的指纹信息并提示用户是否接受。

在某些特定的情况需要我们对主机的真实性做验证避免被中间人攻击。

远程主机指纹:把远程主机的公钥用一种hash算法输出一个较短的数串。

这里会用到两个信息:
1:远程主机的公钥。
2:双方公用的哈希函数。

这里用的远程主机公钥是:椭圆算法生成的公钥,文件名:ssh_host_ed25519_key.pub

哈希函数是:sha256

开始验证:

1、先在远程主机运行:

ssh-keygen -E sha256 -lf /etc/ssh/ssh_host_ed25519_key.pub

生成远程主机的指纹:

256 SHA256:nFFPKBhls3bgt00AlEsVy16+iWdu3iGM4kUsuX/oCWI root@remoteServer (ED25519)

2、使用ssh-keyscan扫描远程主机,获取公钥,并用相同的哈希函数计算一下:

ssh-keyscan.exe -t ed25519 -p 22 8.8.8.8 | ssh-keygen.exe -E sha256 -lf -

输出:

8.8.8.8:22 SSH-2.0-OpenSSH_8.4p1 Debian-5+deb11u1
256 SHA256:nFFPKBhls3bgt00AlEsVy16+iWdu3iGM4kUsuX/oCWI 8.8.8.8 (ED25519)

3、可以看到 1 和 2 生成的指纹是相同的。

/etc/ssh下还有其他几个算法的密钥,可以用相同的算法来检查。

淋雨