SSH密钥* .pem获取指纹?

时间:2016-04-04 11:52:02

标签: bash ssh

我希望获得SSH密钥文件的指纹,这是私钥(PEM文件)。

我尝试了thisthat建议:

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

导致此错误:

  

/ dev / stdin不是公钥文件。

密钥文件如下:

  

-----开始RSA私钥-----
  ..   ----- END RSA私钥-----

如何获取指纹?

2 个答案:

答案 0 :(得分:3)

此命令管道存在几个问题:

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

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

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

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)

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

答案 1 :(得分:-1)

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

bash-4.3$ ssh-keygen -lf sshkey | awk -F " " '{print $2" "$3}'
<块引用>

SHA256:beF471z86giH7cV49TduNVFD949UXzT+jHxgu+99gmM user1sshkey