【发布时间】:2016-07-23 22:45:09
【问题描述】:
我想要我的 SSH 密钥文件的指纹,它是一个私钥(PEM 文件)。
key=$(ssh-keygen -yf lony.pem) | echo $key | ssh-keygen -lf /dev/stdin <<<"$key"
导致此错误:
/dev/stdin 不是公钥文件。
密钥文件如下:
-----开始 RSA 私钥--
..
-----结束 RSA 私钥-----
如何获取指纹?
【问题讨论】:
我想要我的 SSH 密钥文件的指纹,它是一个私钥(PEM 文件)。
key=$(ssh-keygen -yf lony.pem) | echo $key | ssh-keygen -lf /dev/stdin <<<"$key"
导致此错误:
/dev/stdin 不是公钥文件。
密钥文件如下:
-----开始 RSA 私钥--
..
-----结束 RSA 私钥-----
如何获取指纹?
【问题讨论】:
这个命令管道有几个问题:
key=$(ssh-keygen -yf lony.pem) | echo $key |
ssh-keygen -lf /dev/stdin <<<"$key"
首先,不清楚您为什么要尝试将赋值语句的标准输出 (|) 传递给 echo 语句。第一个不产生任何输出,第二个不消耗任何输入。在第三个组件中,您将标准输出从echo 命令传送到ssh-keygen 的标准输入...也使用<<< 运算符重定向标准输入。
从私钥文件中获取指纹的最简单方法就是运行:
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)
并看到我们从两个命令中获得了相同的指纹。
【讨论】:
WITH AWK PIPE(仅限“密码注释”中没有空格)
bash-4.3$ ssh-keygen -lf sshkey | awk -F " " '{print $2" "$3}'
SHA256:beF471z86giH7cV49TduNVFD949UXzT+jHxgu+99gmM user1sshkey
【讨论】: