Wolałbym używać tego openssl
narzędzia, ponieważ wydaje się ono dość wszechobecne.
Konwertuj klucz publiczny i prywatny RSA na format 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
Szyfrowanie pliku za pomocą klucza publicznego:
$ openssl rsautl -encrypt -pubin -inkey id_rsa.pub.pem -in file.txt -out file.enc
Deszyfrowanie pliku za pomocą klucza prywatnego:
$ openssl rsautl -decrypt -inkey id_rsa.pem -in file.enc -out file.txt
Ale, jak skomentował powyżej Gilles, jest to odpowiednie tylko do szyfrowania plików mniejszych niż twój klucz publiczny, więc możesz zrobić coś takiego:
Wygeneruj hasło, zaszyfruj je symetrycznie i zaszyfruj hasło publicznie, zapisując je w pliku:
$ 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
Odszyfruj hasło kluczem prywatnym i użyj go do odszyfrowania pliku:
$ 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
Skończysz na dwóch plikach, zaszyfrowanym pliku i zaszyfrowanym haśle, ale wstawienie do skryptu będzie działało dobrze.
Możesz nawet dodać tar cvf file file.enc file.enc.key
porządek.
Optymalnie można zmaksymalizować rozmiar hasła, a także zmienić rand 64
rozmiar klucza publicznego.