我有两个文件id_rsaid_rsa.pub。可以使用什么命令来验证它们是否有效?

评论

我会确认米歇尔尼克的回答;谢谢,它使我不必再进行新的密钥对。 ssh -v也有很大帮助。

#1 楼

我希望使用ssh-keygen -y -e -f <private key>方式,而不是您如何测试公共/私有DSA密钥对的公认答案?在堆栈溢出上。

ssh-keygen -y -e -f <private key>带有私钥并打印相应的公钥,该公钥可直接与您的可用公钥进行比较。 (提示:提防注释或键选项。)

(这到底是怎么回事?我只能希望将公钥直接或间接编码为私钥...)

我自己需要这个,并使用了以下Bash单线。如果键属于一起,则不应输出任何内容。在脚本中的diff上应用少许-q,并且diff仅适当地设置返回码。

PRIVKEY=id_rsa
TESTKEY=id_rsa.pub
diff <( ssh-keygen -y -e -f "$PRIVKEY" ) <( ssh-keygen -y -e -f "$TESTKEY" )


评论


“这到底是怎么回事”。私钥是由随机性生成的,因此我们都有一个唯一的密钥。如果在此私钥上应用可重复的单向RSA算法,则会获得唯一的公钥。您无法对将要获得唯一私钥的公钥执行算法。

–桦木
2013年9月24日14:29



@Sirch:我认为哪个密钥是私有密钥,哪个密钥是公共密钥是完全随机的,因为两个密钥是相等的。一个密钥加密的内容只能与另一个密钥解密。如果可以从另一个获得一个密钥,那么所有这些都将无法解决。

–米歇尔尼克
2013年9月25日上午11:42

@Michuelnik您可以从私钥派生公钥。您不能从公钥派生私钥。并不是在谈论它加密的材料。

–桦木
13年9月25日在13:35

@Michuelnik imho,问题不在SO上,而是在这里(和/或Superuser)。恕我直言,不应将其标记为重复,而应将其标记为要迁移。但这两者都涵盖了,因此我喜欢更完整的信息共享。

–克里斯K
2013年12月30日20:39在

只要存在id_rsa.pub,ssh-keygen -y -e -f id_rsa根本不会检查id_rsa,而只是从id_rsa.pub返回值。所以如果您回显5> id_rsa以清除私钥,则进行比较,比较将通过!另外,运行ssh-keygen -yef foo(其中foo不是有效密钥(并且没有对应的foo.pub))将阻止等待用户输入,因此请在脚本中谨慎使用此命令。

–user68519
15年7月10日在22:45

#2 楼

根据获得测试的公共密钥文件的位置,接受的答案可能会给出错误的肯定结果。这是由于@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)


这也许不那么灵活,但它可以更好地满足我的需求。也许对别人有帮助。

评论


实际上,这应该代替接受的答案,或者至少在投票方面超过它。

– thomanski
16-10-5在15:01

谢谢!该命令不适用于带有密码短语的键,它不会交互地询问。我将两个()命令内容提取到文件中,并对其进行了差异化处理,这是可行的。

–雅罗斯拉夫·尼基琴科(Yaroslav Nikitenko)
19-10-18在10:10

@KenWilliams Ken,这绝对是题外话,但IDK如何以其他方式与您联系;早在1989年,我就加入了领先的数据库公司Relational Technology Inc(后称为Ingres Corp.),总之,我很快就直接向客户支持与服务高级副总裁Ken Williams汇报。我们迷路了,但他可能是或曾经是您的亲戚?叔叔,也许吗?甚至是Gramps?如果您对此有所了解,我很乐意以某种方式进行联系。谢谢。

–理查德T
20年8月21日在0:35



#3 楼

如果它们在您的本地系统上,请使用id_rsa.pub键将$HOME/.ssh/authorized_keysssh中的localhost粘贴到id_rsa。如果有效,则它们匹配。

cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
ssh -i $HOME/.ssh/id_rsa localhost


评论


如果仍然提示您输入密码怎么办? authorized_keys的权限是正确的,公钥已正确复制到authorized_keys中,我还做了经过验证的答案中提到的差异,并且密钥属于同一类。

–Vasiliki
20/09/30在15:39