Eu preferiria usar o openssl
utilitário, pois parece bastante onipresente.
Converta a chave pública e a chave RSA no 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
Criptografando um arquivo com sua chave pública:
$ openssl rsautl -encrypt -pubin -inkey id_rsa.pub.pem -in file.txt -out file.enc
Descriptografando o arquivo com sua chave privada:
$ openssl rsautl -decrypt -inkey id_rsa.pem -in file.enc -out file.txt
Mas, como Gilles comentou acima, isso é adequado apenas para criptografar arquivos menores que sua chave pública, então você pode fazer algo assim:
Gere uma senha, criptografar o arquivo simetricamente e criptografar a senha com o seu público, salvando a chave em arquivo:
$ 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
Descriptografe a senha com sua chave privada e use-a para descriptografar o arquivo:
$ 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
Você terminará com dois arquivos, seu arquivo criptografado e sua senha criptografada, mas, em um script, ele funcionará bem.
Você pode até adicionar um tar cvf file file.enc file.enc.key
para arrumar.
Idealmente, você maximizaria o tamanho da sua senha e mudaria rand 64
para o tamanho da sua chave pública.