GnuPG (gpg) — Verschlüsseln, Signieren und Schlüssel verwalten

Praxis-Guide zu GnuPG — Schlüssel erzeugen und verwalten, Dateien ver- und entschlüsseln, signieren und verifizieren sowie das Web of Trust nutzen.

GnuPG (kurz gpg) ist die freie OpenPGP-Implementierung und das Standardwerkzeug für Verschlüsselung und digitale Signaturen unter Linux, macOS und Windows. Mit einem einzigen Schlüsselpaar verschlüsselst du Dateien und E-Mails für bestimmte Empfänger, signierst Releases oder Git-Commits und prüfst die Echtheit fremder Daten über das Web of Trust. Dieser Guide führt dich von der Schlüsselerzeugung über Export, Import und Keyserver bis zum Ver- und Entschlüsseln im Alltag. Schütze deinen privaten Schlüssel dabei immer mit einer starken Passphrase — er ist der Generalschlüssel zu allem, was du verschlüsselst.

Schlüsselerzeugung

gpg --full-generate-key — Erzeugt ein neues Schlüsselpaar mit allen Optionen; wähle hier ein modernes Verfahren wie ECC (Ed25519) oder RSA mit mindestens 3072 Bit.

gpg --full-generate-key

gpg --generate-key — Erzeugt ein Schlüsselpaar mit Standardwerten (schnell).

gpg --generate-key

gpg --quick-generate-key '<uid>' — Schnelle Schlüsselerzeugung mit einer User-ID.

gpg --quick-generate-key 'John Doe <john@example.com>'

Schlüsselverwaltung

gpg --list-keys — Listet alle öffentlichen Schlüssel im Keyring auf.

gpg --list-keys

gpg --list-secret-keys — Listet alle privaten Schlüssel auf.

gpg --list-secret-keys --keyid-format long

gpg --fingerprint <key-id> — Zeigt den Fingerprint eines Schlüssels an.

gpg --fingerprint john@example.com

gpg --delete-key <key-id> — Löscht einen öffentlichen Schlüssel.

gpg --delete-key john@example.com

gpg --delete-secret-key <key-id> — Löscht einen privaten Schlüssel — unwiderruflich, lege vorher unbedingt ein Backup an.

gpg --delete-secret-key john@example.com

gpg --edit-key <key-id> — Bearbeitet Schlüssel-Eigenschaften (Trust, Ablaufdatum usw.).

gpg --edit-key john@example.com

Export & Import

gpg --export -a <key-id> > <file> — Exportiert einen öffentlichen Schlüssel im ASCII-Armor-Format.

gpg --export -a john@example.com > john-public.asc

gpg --export-secret-keys -a <key-id> > <file> — Exportiert einen privaten Schlüssel (zum Backup) — niemals weitergeben und nur sicher bzw. verschlüsselt verwahren.

gpg --export-secret-keys -a john@example.com > john-private.asc

gpg --import <file> — Importiert einen Schlüssel aus einer Datei.

gpg --import colleague-public.asc

gpg --keyserver <server> --send-keys <key-id> — Lädt einen öffentlichen Schlüssel auf einen Keyserver hoch.

gpg --keyserver keys.openpgp.org --send-keys ABCD1234

gpg --keyserver <server> --recv-keys <key-id> — Lädt einen Schlüssel von einem Keyserver herunter.

gpg --keyserver keys.openpgp.org --recv-keys ABCD1234

gpg --search-keys '<query>' — Sucht Schlüssel auf einem Keyserver.

gpg --keyserver keys.openpgp.org --search-keys 'john@example.com'

Ver- und Entschlüsseln

gpg -e -r <recipient> <file> — Verschlüsselt eine Datei für einen Empfänger.

gpg -e -r john@example.com secret.txt

gpg -e -r <recipient> -a <file> — Verschlüsselt mit ASCII-Armor-Ausgabe (textsicher).

gpg -e -r john@example.com -a secret.txt

gpg -e -r <r1> -r <r2> <file> — Verschlüsselt für mehrere Empfänger.

gpg -e -r john@example.com -r jane@example.com secret.txt

gpg -d <file> — Entschlüsselt eine Datei.

gpg -d secret.txt.gpg > secret.txt

gpg -c <file> — Symmetrische Verschlüsselung (passwortbasiert, ohne Schlüssel).

gpg -c backup.tar.gz

gpg -d <file>.gpg — Entschlüsselt eine symmetrisch verschlüsselte Datei.

gpg -d backup.tar.gz.gpg > backup.tar.gz

Signieren & Verifizieren

gpg -s <file> — Erstellt eine signierte (binäre) Datei.

gpg -s document.pdf

gpg --detach-sign <file> — Erstellt eine separate Signaturdatei (detached).

gpg --detach-sign release.tar.gz

gpg --clearsign <file> — Erstellt eine Klartext-Signatur (lesbar + signiert).

gpg --clearsign message.txt

gpg -se -r <recipient> <file> — Signiert und verschlüsselt eine Datei.

gpg -se -r john@example.com secret.txt

gpg --verify <signature> <file> — Verifiziert eine separate (detached) Signatur.

gpg --verify release.tar.gz.sig release.tar.gz

gpg --verify <file> — Verifiziert eine signierte Datei.

gpg --verify message.txt.asc

Häufige Muster

echo '<text>' | gpg -e -r <recipient> -a — Verschlüsselt Text von stdin.

echo 'secret password' | gpg -e -r john@example.com -a

gpg --list-keys --keyid-format long — Listet Schlüssel mit langen Key-IDs auf (für Git-Signierung).

gpg --list-keys --keyid-format long

tar czf - <dir> | gpg -c -o <file> — Erstellt ein verschlüsseltes Archiv.

tar czf - secrets/ | gpg -c -o secrets.tar.gz.gpg

gpg -d <file>.gpg | tar xzf - — Entschlüsselt und entpackt ein verschlüsseltes Archiv.

gpg -d secrets.tar.gz.gpg | tar xzf -

Fazit

GnuPG ist seit Jahrzehnten das Rückgrat von OpenPGP und überall dort gesetzt, wo Vertraulichkeit und nachweisbare Echtheit zählen — von signierten Software-Releases bis zu verschlüsselten Backups. Der Einstieg über die Kommandozeile wirkt zunächst sperrig, doch die wenigen Kernbefehle für Erzeugen, Verschlüsseln und Signieren sitzen schnell. Sichere deinen privaten Schlüssel mit Backup und Widerrufszertifikat ab, dann begleitet dich dasselbe Schlüsselpaar über Jahre.

Verwandte Kommandos

  • age – moderne, einfache Datei-Verschlüsselung als GPG-Alternative
  • clamav – Open-Source-Virenscanner für Dateien und Mails
  • fail2ban – sperrt Angreifer nach fehlgeschlagenen Login-Versuchen