最近搭建ubuntu服务器,远程登录让确认指纹,研究一番搞懂了,记录一下。
1、putty 第一次登录服务器,出现提示:
让确认服务器指纹是否正确。
其中:箭头指向的 ed25519 :是一种非对称加密的签名方法,还有其他签名方法。
箭头指向的 SHA256 :是信息摘要(哈希)算法,对一长串信息进行转换处理,产生256个二进制位(32字节)的摘要数据。 这个摘要数据就是信息的指纹(fingerprint) ,
用指纹(信息摘要)几乎可以唯一的表示一串信息, 原始信息稍作改变,摘要(指纹)就会改变。
这里的意思是,putty收到了远端的 ssh-ed25519 公钥, 这个公钥比较长,用SHA256算法生成了简短摘要(指纹: 上面红框里,冒号后面的文字内容),让用户判断指纹是否和想访问的服务器的指纹相符。
服务器是刚搭建好的,暂时也不知道其ssh-ed25519 公钥指纹。需要到服务器端操作生成下:
服务器端ssh公钥私钥保存在 /etc/ssh/ 目录下:输入:
ls -1 /etc/ssh/ssh_host*
可以查看,输出如下:
/etc/ssh/ssh_host_ecdsa_key
/etc/ssh/ssh_host_ecdsa_key.pub
/etc/ssh/ssh_host_ed25519_key
/etc/ssh/ssh_host_ed25519_key.pub
/etc/ssh/ssh_host_rsa_key
/etc/ssh/ssh_host_rsa_key.pub
带.pub后缀的是公钥,文件名里有ed25519的是前述SSH登录时用到的公钥,用如下指令生成其SHA256 摘要:
ssh-keygen -E sha256 -lf /etc/ssh/ssh_host_ed25519_key.pub
输出如下:
上图中SHA256冒号后的一串文字就是ed25519公钥摘要(指纹), 和前面让确认的指纹进行对比,完全相同,证明SSH登录访问的服务器是预期的服务器。
批量生成指纹的方法:
for f in /etc/ssh/*key.pub; do ssh-keygen -E sha256 -lf $f; done