如何对SSH私钥进行编码和解码

7
我将私钥作为gitlab环境变量传递。 但是,当我使用echo命令输出时,它被更改了,格式与原始格式不同:
-----BEGIN RSA PRIVATE KEY----- 
xxxxxxx 
-----END RSA PRIVATE KEY-----

所以我认为解决方案必须是再次使用base64进行编码,然后进行解码

如何在bash shell中实现呢?

我尝试过的方法是:

encode ./private-key 
bash6d -d ./private-key

我对此持怀疑态度,这可能不是正确的做法。请问有人能帮助我吗?
2个回答

9

我更喜欢使用openssl

openssl enc -base64 -in my.key -out my.key.base64

然后,要对其进行解码:
openssl enc -d -base64 -in my.key.base64 -out my.key

如果你想在标准输出上查看结果,可以省略“-out”部分。
而且你可以使用-a代替-base64(同样的选项,更短)。
测试方法如下:
openssl enc -a -in my.key | openssl enc -a -d

3
希望这篇文章能对他人有所帮助。我曾遇到过类似的情况,需要将ssh私钥进行编码,并嵌入到Kubernetes secret中,在POD内部使用挂载文件。以下是我的解决方法。
如果您正在使用Linux环境,则可以使用以下命令对数据进行编码。
$ cat private_key.pem|base64
{Encoded_Data}

将此输出复制到“secret”中,当挂载时,我可以发现解码后的数据已经与编码前相同。但是,如果您想要解码此数据,可以使用以下命令。

$cat encoded_private_key.pem|base64 --decode

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接