我id_rsa
使用以下命令将私钥转换为 RSA 格式
ssh-keygen -p -m PEM -f ~/.ssh/id_rsa
在这个答案中解释了。
然后我添加了一些方便的别名,这些别名允许我使用自己的身份文件加密和解密数据:
alias encrypt='openssl pkeyutl -encrypt -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256 -pubin -inkey <(ssh-keygen -e -f "$HOME/.ssh/id_rsa.pub" -m PKCS8)'
alias decrypt='openssl pkeyutl -decrypt -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256 -inkey "$HOME/.ssh/id_rsa"'
现在我可以做:
echo foobar | encrypt > test.enc
cat test.enc | decrypt
它将打印foobar
,但test.enc
可以存储而不暴露foobar
。当然有更好的方法来做到这一点,但我尝试这样做的原因是为了摆脱任何密码提示。
我的id_rsa
受密码保护,但我启动终端会话时ssh-add
仅提示我输入一次密码,这样当我使用ssh
(包括git
)时,我不必再次输入我的密码。
然而,对于 却不能这样说openssl pkeyutl -decrypt
,每当我使用它时,它都会要求输入密码短语,这是有道理的,因为openssl
是 所使用的底层工具openssh
。
无论如何,有什么办法可以使用ssh-add
会话吗openssl
?