我有一个由 生成并加密的私钥文件ssh-keygen
。当我有密码时,有没有办法直接打开查看文件?或者只有使用ssh-keygen -p
撤消密码才能获取未加密文件的方法?
我试过了ssh-keygen -e -f id_rsa
,但是它会打开 id_rsa.pub,即使文件 id_rsa 包含私钥。
我需要明文密钥的原因是为了将其插入 Github Actions 机密中。
答案1
我看不出使用openssl
或ssh-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