Я бы предпочел использовать openssl
утилиту, так как она кажется довольно вездесущей.
Преобразовать открытый ключ RSA и закрытый ключ в формат 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
Шифрование файла с помощью вашего открытого ключа:
$ openssl rsautl -encrypt -pubin -inkey id_rsa.pub.pem -in file.txt -out file.enc
Расшифровка файла с вашим закрытым ключом:
$ openssl rsautl -decrypt -inkey id_rsa.pem -in file.enc -out file.txt
Но, как прокомментировал Жиль выше, это подходит только для шифрования файлов меньше вашего открытого ключа, поэтому вы можете сделать что-то вроде этого:
Сгенерируйте пароль, зашифруйте файл симметрично и зашифруйте пароль с помощью открытого ключа, сохранив его в файле:
$ 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
Расшифруйте парольную фразу своим закрытым ключом и используйте его для расшифровки файла:
$ 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
В итоге вы получите два файла: ваш зашифрованный файл и вашу зашифрованную фразу-пароль, но если поместить в сценарий, он будет работать хорошо.
Вы могли бы даже добавить tar cvf file file.enc file.enc.key
чтобы привести в порядок.
Оптимально, вы бы максимизировали размер вашей парольной фразы, а также изменили rand 64
бы размер вашего открытого ключа.