使用 ssh-keygen 时,无法解释私有 ssh 密钥的缓存公共指纹

使用 ssh-keygen 时,无法解释私有 ssh 密钥的缓存公共指纹

我在使用 SSH 时遇到了一个奇怪的问题。

我正在使用ssh-keygen -lf id_rsa我的私人 ssh 密钥生成公共指纹id_rsa

但是,无论我如何替换或更改我的私钥文件的内容id_rsa,该ssh-keygen -l命令都会给出相同的结果。

就像密钥或指纹以某种方式被缓存一样。

到底是怎么回事?

答案1

我在写问题的时候发现了答案。

如果您没有与您的私钥相对应的公钥文件(id_rsa.pub在此示例中),那么ssh-keygen -l将根据您的私钥计算公钥,并使用这个计算出的公钥来计算公钥指纹,正如预期的那样。

但是,如果您确实有一个公钥文件(例如id_rsa.pub),那么ssh-keygen -l就不会费心计算公钥,而是使用公钥文件来获取指纹。

这是一个奇怪的行为,因为您可能需要的所有数据都在私钥中,并且从私钥计算公钥并不需要很长时间。它也不会检查私钥和公钥是否真的匹配。但是,这种奇怪的行为实际上记录在 的手册页中ssh-keygen。所以,基本上,是的,有一个缓存:缓存是公钥文件(例如id_rsa.pub)。

您可以安全地删除公钥文件并使用重新生成它ssh-keygen -y -f id_rsa > id_rsa.pub

相关内容