SSH 密钥 *.pem 获取指纹?

lon*_*ony 1 ssh bash

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

我尝试遵循这个那个建议:

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

导致这个错误:

/dev/stdin 不是公钥文件。

密钥文件如下所示:

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

我怎样才能得到指纹?

lar*_*sks 5

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

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

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

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

ssh-keygen -lf /path/to/privatekey.pem
Run Code Online (Sandbox Code Playgroud)

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

bash-4.3$ ssh-keygen -f testkey -N ''
Run Code Online (Sandbox Code Playgroud)

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

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

对此:

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

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

  • http://serverfault.com/questions/603982/why-does-my-openssh-key-fingerprint-not-match-the-aws-ec2-console-keypair-finger 解决了它 (2认同)