Answers:
我更喜欢这种ssh-keygen -y -e -f <private key>
方式,而不是“ 如何测试公共/私有DSA密钥对? ”的公认答案。在堆栈溢出。
ssh-keygen -y -e -f <private key>
获取一个私钥并打印相应的公钥,该公钥可以直接与您可用的公钥进行比较。(提示:提防注释或键选项。)
(这到底是怎么回事?我只能希望将公钥直接或间接编码为私钥...)
我自己需要这个,并使用了以下Bash单线。如果键属于一起,则不应输出任何内容。-q
对脚本中的差异稍加应用,差异仅适当地设置返回码。
PRIVKEY=id_rsa
TESTKEY=id_rsa.pub
diff <( ssh-keygen -y -e -f "$PRIVKEY" ) <( ssh-keygen -y -e -f "$TESTKEY" )
根据获得测试的公共密钥文件的位置,接受的答案可能会给出错误的肯定结果。这是由于@drewbenn的注释中描述的行为。具体来说,当-e选项与私钥文件一起用作-f选项参数时,它只是模仿(但重新格式化)了相关联的公钥文件中的内容。
换一种说法,
ssh-keygen -y -f id_rsa
(显然)生成公钥值,并且
ssh-keygen -y -e -f id_rsa
简单地和输出(并格式化)在关键现有 id_rsa.pub 不管它是。
就我而言,我必须验证该对没有损坏。因此,我决定比较以下内容:
ssh-keygen -y -f id_rsa | cut -d' ' -f 2
与
cut -d' ' -f 2 id_rsa.pub
因此:
diff <(cut -d' ' -f 2 id_rsa.pub) <(ssh-keygen -y -f id_rsa | cut -d' ' -f 2)
也许这不那么灵活,但是对我来说更好。也许它可以帮助别人。
ssh -v
也有很大帮助。