如何查看加密的私钥文件?

如何查看加密的私钥文件?

我有一个由 生成并加密的私钥文件ssh-keygen。当我有密码时,有没有办法直接打开查看文件?或者只有使用ssh-keygen -p撤消密码才能获取未加密文件的方法?

我试过了ssh-keygen -e -f id_rsa,但是它会打开 id_rsa.pub,即使文件 id_rsa 包含私钥。

我需要明文密钥的原因是为了将其插入 Github Actions 机密中。

答案1

我看不出使用opensslssh-keygen输出解密私钥的方法。不过,使用如下这种丑陋的黑客手段或许可以实现:

#!/bin/sh
pipe=pipe.$$
mkfifo -m600 "$pipe"

(
    cat .ssh/id_rsa >"$pipe"         # Write protected private key to ssh-keygen
    sleep 1
    cat .ssh/id_rsa >"$pipe"         # And again (just because)
    sleep 1

    cat pipe.$$                      # Read the decrypted key
) &

ssh-keygen -q -p -N '' -f "$pipe"    # Decrypt the protected private key

wait
rm -f "$pipe"

解密后的私钥应该被读取$pipe并写入标准输出,您可以使用它来做任何需要做的事情。

在编写此代码时,我假设由于您首先对密钥进行了加密,因此您在相对不安全的环境中工作,并且不希望密钥以未加密的格式写入磁盘。所以我使用管道传递密钥。如果您愿意将未加密的密钥保存到磁盘,那就容易多了:

cp .ssh/id_rsa .ssh/id_rsa_u
ssh-keygen -q -p -N '' -f .ssh/id_rsa_u
cat .ssh/id_rsa_u
rm .ssh/id_rsa_u

相关内容