我希望获得SSH密钥文件的指纹,这是私钥(PEM文件)。
key=$(ssh-keygen -yf lony.pem) | echo $key | ssh-keygen -lf /dev/stdin <<<"$key"
导致此错误:
/ dev / stdin不是公钥文件。
密钥文件如下:
-----开始RSA私钥-----
.. ----- END RSA私钥-----
如何获取指纹?
答案 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