Ich würde es vorziehen, das openssl
Dienstprogramm zu verwenden, da es ziemlich allgegenwärtig zu sein scheint.
Konvertieren Sie den öffentlichen und den privaten RSA-Schlüssel in das PEM-Format:
$ openssl rsa -in ~/.ssh/id_rsa -outform pem > id_rsa.pem
$ openssl rsa -in ~/.ssh/id_rsa -pubout -outform pem > id_rsa.pub.pem
Verschlüsseln einer Datei mit Ihrem öffentlichen Schlüssel:
$ openssl rsautl -encrypt -pubin -inkey id_rsa.pub.pem -in file.txt -out file.enc
Entschlüsseln Sie die Datei mit Ihrem privaten Schlüssel:
$ openssl rsautl -decrypt -inkey id_rsa.pem -in file.enc -out file.txt
Wie Gilles bereits erwähnt hat, ist dies jedoch nur zum Verschlüsseln von Dateien geeignet, die kleiner als Ihr öffentlicher Schlüssel sind. Sie können also Folgendes tun:
Generieren Sie ein Passwort, verschlüsseln Sie die Datei symmetrisch und verschlüsseln Sie das Passwort mit Ihrem öffentlichen Schlüssel. Speichern Sie es in der Datei:
$ 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
Entschlüsseln Sie die Passphrase mit Ihrem privaten Schlüssel und verwenden Sie sie zum Entschlüsseln der Datei:
$ 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
Sie werden am Ende zwei Dateien haben, Ihre verschlüsselte Datei und Ihre verschlüsselte Passphrase, aber in einem Skript würde es gut funktionieren.
Sie könnten sogar eine hinzufügen, tar cvf file file.enc file.enc.key
um aufzuräumen.
Optimalerweise maximieren Sie die Größe Ihrer Passphrase und ändern sie rand 64
in die Größe Ihres öffentlichen Schlüssels.