Preferiría usar la openssl
utilidad, ya que parece ser bastante ubicua.
Convierta la clave pública RSA y la clave privada al formato PEM:
$ openssl rsa -in ~/.ssh/id_rsa -outform pem > id_rsa.pem
$ openssl rsa -in ~/.ssh/id_rsa -pubout -outform pem > id_rsa.pub.pem
Cifrar un archivo con su clave pública:
$ openssl rsautl -encrypt -pubin -inkey id_rsa.pub.pem -in file.txt -out file.enc
Descifrar el archivo con su clave privada:
$ openssl rsautl -decrypt -inkey id_rsa.pem -in file.enc -out file.txt
Pero, como Gilles comentó anteriormente, esto solo es adecuado para encriptar archivos más pequeños que su clave pública, por lo que podría hacer algo como esto:
Genere una contraseña, cifre el archivo con ella simétricamente y cifre la contraseña con su público, la clave la guarda en el archivo:
$ openssl rand 64 |
tee >(openssl enc -aes-256-cbc -pass stdin -in file.txt -out file.enc) |
openssl rsautl -encrypt -pubin -inkey id_rsa.pub.pem -out file.enc.key
Descifre la frase de contraseña con su clave privada y úsela para descifrar el archivo:
$ openssl rsautl -decrypt -inkey id_rsa.pem -in file.enc.key |
openssl enc -aes-256-cbc -pass stdin -d -in file.enc -out file.txt
Terminarás con dos archivos, tu archivo encriptado y tu frase de contraseña encriptada, pero si lo pones en un script, funcionaría bien.
Incluso podría agregar una tar cvf file file.enc file.enc.key
para ordenar.
De manera óptima, maximizaría el tamaño de su frase de contraseña y cambiaría rand 64
el tamaño de su clave pública.