AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 426394
Accepted
Ryan
Ryan
Asked: 2012-09-12 08:24:06 +0800 CST2012-09-12 08:24:06 +0800 CST 2012-09-12 08:24:06 +0800 CST

如何检查 RSA 公钥/私钥对是否匹配

  • 772

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

linux
  • 4 4 个回答
  • 278292 Views

4 个回答

  • Voted
  1. Best Answer
    Michuelnik
    2012-09-12T09:58:04+08:002012-09-12T09:58:04+08:00

    我更喜欢这种方式,而不是How do you test a public/private DSA keypair?ssh-keygen -y -e -f <private key>的公认答案?在堆栈溢出上。

    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" )
    
    • 179
  2. twildfarmer
    2016-04-02T16:04:30+08:002016-04-02T16:04:30+08:00

    根据您从哪里获得您正在测试的公钥文件,接受的答案可能会给出误报结果。这是因为@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)
    

    也许这不是那么灵活,但它更适合我的需要。也许它可以帮助别人。

    • 69
  3. Oliver
    2021-05-07T10:00:25+08:002021-05-07T10:00:25+08:00

    最简单的方法是比较指纹,因为公钥和私钥相同。通过将两个命令放在同一行,视觉比较非常容易:

    ssh-keygen -l -f PRIVATE_KEY; ssh-keygen -l -f PUBLIC_KEY
    

    以编程方式,您将希望忽略评论部分

    diff -s <(ssh-keygen -l -f PRIVATE_KEY | cut -d' ' -f2) <(ssh-keygen -l -f PUBLIC_KEY | cut -d' ' -f2)
    
    • 11
  4. Michael Hampton
    2012-09-12T08:26:56+08:002012-09-12T08:26:56+08:00

    如果它们在您的本地系统上,请坚持使用您id_rsa.pub的密钥。如果有效,则它们匹配。$HOME/.ssh/authorized_keyssshlocalhostid_rsa

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

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve