ssh-keygen:非法选项 - m

时间:2017-08-08 14:06:45

标签: openssl redhat

我跟着这个:

https://www.bjornjohansen.no/encrypt-file-using-ssh-key

但是这一行:

$ openssl rsautl -encrypt -oaep -pubin -inkey <(ssh-keygen -e -f recipients-key.pub -m PKCS8) -in secret.key -out secret.key.enc

在这里失败-m PKCS8给予ssh-keygen: illegal option -- m

我在RedHat Linux 6.5上。这个标志的目的是什么?RH6.5的替代方案是什么?

1 个答案:

答案 0 :(得分:0)

  

这个标志的目的是什么

有多种格式可以对RSA公钥进行编码。

最常见的三个是:

  • 您的recipients-key.pub文件中使用的单行格式;

  • RFC 4716 SSH公钥文件格式,与recipients-key.pub中的格式几乎相同,但有一个页眉,一个页脚和多行使用。关键参数是使用ASN.1编码;

  • PKCS#8格式,有标题,页脚,,并且使用ASN.1对参数进行编码

在OpenSSH v5.6之前,ssh-keygen只能从第一个转换为第二个。所以,不需要参数。

从OpenSSH v5.6开始,ssh-keygen可以从第一种格式转换为第二种格式,或者从第一种格式转换为第三种格式。 所以,有两种可能性。这就是你有这个新参数的原因

  

RH6.5有哪些替代方案?

使用此Python脚本和一些基本工具转换为openssl所需的PKCS#8格式:

# yum install python-pyasn1
# curl https://gist.githubusercontent.com/thwarted/1024558/raw/19fd80a5caf648eeba3b003e8f0fd90c6614fef5/sshpub-to-rsa > convert.py
# openssl rsautl -encrypt -oaep -pubin -inkey <(python convert.py <(awk '{ print $1" "$2" "$3; }' < recipients-key.pub) | sed 2,3d) -in secret.key -out secret.key.enc