关于bash:SSH密钥* .pem获取指纹?

SSH key *.pem get fingerprint?

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

我试着遵循这个和那个建议:

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

结果int此错误:

/dev/stdin is not a public key file.

密钥文件如下:

-----BEGIN RSA PRIVATE KEY-----
..
-----END RSA PRIVATE KEY-----

我怎样才能拿到指纹?


此命令管道有几个问题:

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

首先,不清楚为什么你要把你的作业陈述书中的stdout(|导入echo陈述书。第一个不产生任何输出,第二个不消耗任何输入。在第三个组件中,您正在将stdout从echo命令传送到ssh-keygen的stdin,在这里您还使用<<<运算符重定向stdin。

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

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

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

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

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

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

对此:

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

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