Mic*_*nik 150
我更喜欢这种ssh-keygen -y -e -f <private key>方式而不是你如何测试公共/私有 DSA 密钥对的公认答案?在堆栈溢出上。
ssh-keygen -y -e -f <private key>获取私钥并打印相应的公钥,该公钥可以直接与您的可用公钥进行比较。(提示:注意注释或关键选项。)
(这到底是怎么做到的?我只能希望公钥直接或间接编码在私钥中......)
我自己需要这个并使用以下 Bash one-liner。如果键属于一起,它应该不输出任何内容。-q对脚本中的差异应用一点点,差异只会适当地设置返回码。
PRIVKEY=id_rsa
TESTKEY=id_rsa.pub
diff <( ssh-keygen -y -e -f "$PRIVKEY" ) <( ssh-keygen -y -e -f "$TESTKEY" )
Run Code Online (Sandbox Code Playgroud)
小智 56
根据您获取正在测试的公钥文件的位置,接受的答案可能会给出误报结果。这是因为@drewbenn 在评论中描述的行为。具体来说,当 -e 选项与私钥文件一起用作 -f 选项参数时,它只是模仿(但重新格式化)相关公钥文件中的内容。
换句话说,
ssh-keygen -y -f id_rsa
Run Code Online (Sandbox Code Playgroud)
(显然)生成公钥值,和
ssh-keygen -y -e -f id_rsa
Run Code Online (Sandbox Code Playgroud)
简单地输出(和重新格式化)现有id_rsa.pub 中的密钥,无论它是什么。
就我而言,我必须验证该对是否已损坏。因此,我决定比较以下内容:
ssh-keygen -y -f id_rsa | cut -d' ' -f 2
Run Code Online (Sandbox Code Playgroud)
和
cut -d' ' -f 2 id_rsa.pub
Run Code Online (Sandbox Code Playgroud)
所以:
diff <(cut -d' ' -f 2 id_rsa.pub) <(ssh-keygen -y -f id_rsa | cut -d' ' -f 2)
Run Code Online (Sandbox Code Playgroud)
也许这不是那么灵活,但它更适合我的需求。也许它可以帮助别人。
小智 14
最简单的是比较指纹,因为公钥和私钥具有相同的。通过将两个命令放在同一行,视觉比较非常容易:
ssh-keygen -l -f PRIVATE_KEY; ssh-keygen -l -f PUBLIC_KEY
Run Code Online (Sandbox Code Playgroud)
以编程方式,您需要忽略注释部分,因此
diff -s <(ssh-keygen -l -f PRIVATE_KEY | cut -d' ' -f2) <(ssh-keygen -l -f PUBLIC_KEY | cut -d' ' -f2)
Run Code Online (Sandbox Code Playgroud)
如果他们是你的本地系统上,贴id_rsa.pub在你$HOME/.ssh/authorized_keys和ssh以localhost使用id_rsa密钥。如果有效,则它们匹配。
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
ssh -i $HOME/.ssh/id_rsa localhost
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
228284 次 |
| 最近记录: |