![使用 ssh-keygen 时,无法解释私有 ssh 密钥的缓存公共指纹](https://linux22.com/image/1622775/%E4%BD%BF%E7%94%A8%20ssh-keygen%20%E6%97%B6%EF%BC%8C%E6%97%A0%E6%B3%95%E8%A7%A3%E9%87%8A%E7%A7%81%E6%9C%89%20ssh%20%E5%AF%86%E9%92%A5%E7%9A%84%E7%BC%93%E5%AD%98%E5%85%AC%E5%85%B1%E6%8C%87%E7%BA%B9.png)
我在使用 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
。