【问题标题】:SSH key *.pem get fingerprint?SSH 密钥 *.pem 获取指纹?
【发布时间】:2016-07-23 22:45:09
【问题描述】:

我想要我的 SSH 密钥文件的指纹,它是一个私钥(PEM 文件)。

我尝试遵循thisthat 的建议:

key=$(ssh-keygen -yf lony.pem) | echo $key | ssh-keygen -lf /dev/stdin <<<"$key"

导致此错误:

/dev/stdin 不是公钥文件。

密钥文件如下:

-----开始 RSA 私钥--
..
-----结束 RSA 私钥-----

如何获取指纹?

【问题讨论】:

    标签: bash ssh


    【解决方案1】:

    这个命令管道有几个问题:

    key=$(ssh-keygen -yf lony.pem) | echo $key | 
    ssh-keygen -lf /dev/stdin <<<"$key"
    

    首先,不清楚您为什么要尝试将赋值语句的标准输出 (|) 传递给 echo 语句。第一个不产生任何输出,第二个不消耗任何输入。在第三个组件中,您将标准输出从echo 命令传送到ssh-keygen 的标准输入...使用&lt;&lt;&lt; 运算符重定向标准输入。

    从私钥文件中获取指纹的最简单方法就是运行:

    ssh-keygen -lf /path/to/privatekey.pem
    

    例如,如果我们生成一个私钥:

    bash-4.3$ ssh-keygen -f testkey -N ''
    

    然后我们可以比较这个的输出:

    bash-4.3$ ssh-keygen -lf testkey
    2048 SHA256:beF471z86giH7cV49TduNVFD949UXzT+jHxgu+99gmM lars@myhost (RSA)
    

    到这里:

    bash-4.3$ ssh-keygen -yf testkey | ssh-keygen -lf /dev/stdin
    2048 SHA256:beF471z86giH7cV49TduNVFD949UXzT+jHxgu+99gmM no comment (RSA)
    

    并看到我们从两个命令中获得了相同的指纹。

    【讨论】:

    • 谢谢你是对的!我只是想要公钥中的指纹。问题是您的最后一条命令总是导致“/dev/stdin 不是公钥文件。”
    • 会不会是 AWS 使用了另一种指纹识别方法?使用您的第一种方法会像 AWS 一样返回另一个哈希 :(
    【解决方案2】:

    WITH AWK PIPE(仅限“密码注释”中没有空格)

    bash-4.3$ ssh-keygen -lf sshkey | awk -F " " '{print $2" "$3}'
    

    SHA256:beF471z86giH7cV49TduNVFD949UXzT+jHxgu+99gmM user1sshkey

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-12
      • 2013-03-17
      • 1970-01-01
      • 2023-03-13
      • 2013-04-24
      • 1970-01-01
      相关资源
      最近更新 更多