Encrypt a file using gpg
From Andreida
<User-ID> is always just enough to find the key in the key ring.
Encryption / Decryption
Create a key
gpg --gen-key
Encrypt the file
gpg --recipient '<User-ID>' --output test.gpg --encrypt test.txt
Decrypt the file
gpg --output test.out.txt --decrypt test.gpg
Key Backup
List keys
gpg --list-keys
Export the public key
gpg --armor --output pubkey.txt --export '<User-ID>'
Export the private key
gpg --armor --output private.txt --export-secret-keys '<User-ID>'
Delete Keys
Delete the private key
gpg --delete-secret-key <User-ID>
Delete the public key
gpg --delete-key <User-ID>
Restore Keys
Import the private (and implicit public) key
gpg --import private.txt
Trust your own key
To remove the boring interactive questioning after the message
There is no assurance this key belongs to the named user
gpg --edit-key <User-ID> trust 1 (or whatever number is needed) save
Script
The following script will take any file and encrypt it to filename + '.gpg'. You have to change the <User-ID> of course.
#!/bin/bash # if there are too few parameters, show the syntax and exit if [ $# -ne 1 ]; then echo Syntax: $0 \<file\> echo Example: $0 /opt/Backups/BackupEtcAndHome.tar.gz exit 1 fi # if the file does not exist, show an error and exit if [ ! -e $1 ]; then echo Error: file $1 does not exist ! exit 2 fi Source=$1 Target=$1.gpg echo -n Removing target $Target... rm -f $Target echo ok echo -n Encrypting $Source to $Target... gpg --recipient 'User-ID' --output $Target --encrypt $Source echo ok echo -n changing attributes... chmod 600 $Target echo ok ls -lh $Target