Converti minha id_rsa
chave privada para o formato RSA usando
ssh-keygen -p -m PEM -f ~/.ssh/id_rsa
explicado nesta resposta .
Em seguida, adicionei alguns aliases úteis que me permitirão criptografar e descriptografar dados com meus próprios arquivos de identidade:
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"'
Agora posso fazer:
echo foobar | encrypt > test.enc
cat test.enc | decrypt
Ele será impresso foobar
, mas test.enc
poderá ser armazenado sem exposição foobar
. Certamente existem maneiras melhores de fazer isso, mas a razão pela qual tento fazer isso é para me livrar de qualquer solicitação de senha.
O meu id_rsa
é protegido por senha, mas inicio minha sessão de terminal com ssh-add
a qual solicita minha senha de senha apenas uma vez, para que, quando eu usar ssh
(incluindo git
), não precise inserir minha senha novamente.
Porém, o mesmo não pode ser dito do openssl pkeyutl -decrypt
, ele solicitará uma senha sempre que eu usá-lo, o que faz sentido, pois openssl
é a ferramenta subjacente usada pelo openssh
.
Independentemente disso, existe alguma maneira de usar a ssh-add
sessão para openssl
?