我跟着这个:
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的替代方案是什么?
答案 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