Tips

⚡ Import key from key server

gpg --auto-key-locate keyserver --locate-keys name@example.com
# or
gpg --search-keys name@example.com

⚡ Change key server

Add in ~/.gnupg/gpg.conf

keyserver hkps://keys.openpgp.org

⚡ Sign

gpg -sab -o - --yes -u 0x... file

# -s: sign
# -a: ascii armored
# -b: detach (standalone signature file)
# -o -: write to stdout
# --yes: force overwriting existing signature
# -u 0x...: choose the key (gpg --keyid-format 0xshort)
# file: file to be signed

⚡ Purge master key

Find the keygrip

gpg --with-keygrip --list-secret-keys

Remove the key from ~/.gnupg/private-keys-v1.d/ by keygrip.

⚡ List subkey ids

gpg -k --keyid-format long

⚡ Reload GPG Agent

gpg-connect-agent killagent /bye
gpg-connect-agent updatestartuptty /bye

GPG in Linux Server

I tried to setup GPG in a Linux server and met problems when performing commands that require passphrase. It turns out that I have to set the GPG_TTY to tell gpg-agent that it should ask password from current console.

First kill the gpg-agent. Because it may already hang in the background to wait for a password.

pkill -9 gpg-agent

Then set the environment variable for the current session

export GPG_TTY=$(tty)

Or save it for future sessions

echo 'export GPG_TTY=$(tty)' >> ~/.profile