GPG / age — Encryption

If you like this project, consider supporting me on Buy Me a Coffee ☕️

GPG / age Sysadmin Cheatsheet

Context: GPG (GNU Privacy Guard) is a complete, free implementation of the OpenPGP standard for encrypting data and creating digital signatures. age is a modern, simpler alternative focused solely on file encryption with a minimal design. GPG is widely used for email encryption, package signing, and credential management. age is ideal for simple file encryption in scripts and modern workflows. / GPG — полная реализация стандарта OpenPGP для шифрования данных и цифровых подписей. age — современная альтернатива, ориентированная на простое шифрование файлов. GPG широко используется для шифрования почты, подписи пакетов. age идеален для шифрования файлов в скриптах. Role: Security Engineer / Sysadmin Version: GPG 2.x / age 1.x


📚 Table of Contents / Содержание

  1. Installation & Configuration
  2. GPG Key Management
  3. GPG Encryption & Decryption
  4. GPG Signing & Verification
  5. age — Modern Encryption
  6. Real-World Examples
  7. Troubleshooting & Tools
  8. Best Practices
  9. Documentation Links

1. Installation & Configuration

Install GPG / Установка GPG

# GPG is usually pre-installed / GPG обычно предустановлен
gpg --version                                 # Check version / Проверить версию

# Debian/Ubuntu (if missing)
sudo apt install gnupg

# RHEL/CentOS/Fedora
sudo dnf install gnupg2

# macOS
brew install gnupg

Install age / Установка age

sudo apt install age                          # Debian/Ubuntu
brew install age                              # macOS
go install filippo.io/age/cmd/...@latest      # From source / Из исходников

Configuration Paths / Пути конфигурации

Path Description (EN / RU)
~/.gnupg/ GPG directory / Директория GPG
~/.gnupg/gpg.conf GPG config / Конфигурация GPG
~/.gnupg/gpg-agent.conf Agent config / Конфигурация агента
~/.age/ age directory / Директория age

GPG vs age Comparison / Сравнение GPG и age

Feature GPG age
Complexity / Сложность High / Высокая Low / Низкая
Key management / Управление ключами Keyservers, WoT / Серверы ключей Simple files / Простые файлы
Compatibility / Совместимость Wide / Широкая Growing / Растущая
SSH key support / Поддержка SSH Via agent / Через агент Native / Нативная
Best for / Лучше для Email, signing, legacy / Почта, подписи Files, scripts, modern / Файлы, скрипты

[!TIP] Use age for new projects (simpler, no config). Use GPG for compatibility with existing systems (email, package signing). Используйте age для новых проектов (проще). GPG — для совместимости (почта, подпись пакетов).


2. GPG Key Management

Generate Keys / Генерация ключей

gpg --gen-key                                 # Generate key (interactive) / Генерировать ключ (интерактивно)
gpg --full-generate-key                       # Full key generation / Полная генерация ключа
gpg --quick-generate-key "<USER> <<EMAIL>>"   # Quick key generation / Быстрая генерация ключа
gpg --quick-generate-key "<USER> <<EMAIL>>" rsa4096  # RSA 4096-bit key / Ключ RSA 4096 бит

List Keys / Список ключей

gpg --list-keys                               # List public keys / Список публичных ключей
gpg --list-secret-keys                        # List private keys / Список приватных ключей
gpg --list-sigs                               # List signatures / Список подписей
gpg -K                                        # Short for list-secret-keys / Короткая форма

Export Keys / Экспорт ключей

gpg --export <KEY_ID> > public.gpg            # Export public key / Экспортировать публичный ключ
gpg --export --armor <KEY_ID> > public.asc    # Export ASCII armored / Экспортировать в ASCII
gpg --export-secret-keys --armor <KEY_ID> > private.asc  # Export private key / Экспортировать приватный ключ
gpg --export-secret-subkeys <KEY_ID> > subkeys.gpg  # Export subkeys / Экспортировать подключи

[!CAUTION] Never share your private key (--export-secret-keys). Store it securely on encrypted media or hardware tokens. Никогда не передавайте приватный ключ. Храните его на зашифрованных носителях или аппаратных токенах.

Import Keys / Импорт ключей

gpg --import public.asc                       # Import public key / Импортировать публичный ключ
gpg --import private.asc                      # Import private key / Импортировать приватный ключ

Delete Keys / Удаление ключей

gpg --delete-keys <KEY_ID>                    # Delete public key / Удалить публичный ключ
gpg --delete-secret-keys <KEY_ID>             # Delete private key / Удалить приватный ключ
gpg --delete-secret-and-public-keys <KEY_ID>  # Delete both / Удалить оба

Edit Keys / Редактирование ключей

gpg --edit-key <KEY_ID>                       # Edit key (interactive) / Редактировать ключ (интерактивно)
# > adduid                                    # Add UID / Добавить UID
# > expire                                    # Change expiration / Изменить срок действия
# > trust                                     # Set trust level / Установить уровень доверия
# > save                                      # Save and exit / Сохранить и выйти

Keyserver Operations / Операции с серверами ключей

gpg --send-keys <KEY_ID>                      # Send to keyserver / Отправить на сервер ключей
gpg --recv-keys <KEY_ID>                      # Receive from keyserver / Получить с сервера ключей
gpg --search-keys <EMAIL>                     # Search keyserver / Поиск на сервере ключей
gpg --keyserver keyserver.ubuntu.com --send-keys <KEY_ID>  # Specific server / Конкретный сервер

3. GPG Encryption & Decryption

Symmetric Encryption / Симметричное шифрование

gpg --symmetric file                          # Encrypt with password / Зашифровать паролем
gpg --symmetric --cipher-algo AES256 file     # AES256 encryption / Шифрование AES256
gpg -c file                                   # Short form / Короткая форма

Asymmetric Encryption / Асимметричное шифрование

gpg --encrypt --recipient <EMAIL> file        # Encrypt for recipient / Зашифровать для получателя
gpg -e -r <EMAIL> file                        # Short form / Короткая форма
gpg --encrypt --armor -r <EMAIL> file         # ASCII armored / В формате ASCII
gpg --encrypt --recipient <EMAIL1> --recipient <EMAIL2> file  # Multiple recipients / Несколько получателей

Decryption / Расшифровка

gpg --decrypt file.gpg                        # Decrypt file / Расшифровать файл
gpg -d file.gpg                               # Short form / Короткая форма
gpg -d file.gpg > decrypted.txt               # Decrypt to file / Расшифровать в файл
gpg --decrypt --output decrypted.txt file.gpg # Decrypt with output / Расшифровать с выводом

Encrypt and Sign / Зашифровать и подписать

gpg --encrypt --sign --recipient <EMAIL> file # Encrypt and sign / Зашифровать и подписать
gpg -es -r <EMAIL> file                       # Short form / Короткая форма

4. GPG Signing & Verification

Sign Files / Подписание файлов

gpg --sign file                               # Sign file / Подписать файл
gpg -s file                                   # Short form / Короткая форма
gpg --clearsign file                          # Clear text signature / Подпись открытым текстом
gpg --detach-sign file                        # Detached signature / Отдельная подпись
gpg --armor --detach-sign file                # ASCII detached signature / ASCII отдельная подпись

Verify Signatures / Проверка подписей

gpg --verify file.sig file                    # Verify detached signature / Проверить отдельную подпись
gpg --verify file.sig                         # Verify signature / Проверить подпись
gpg --verify file.asc                         # Verify clear-signed / Проверить подпись открытым текстом

Sign and Encrypt / Подписать и зашифровать

gpg --sign --encrypt --recipient <EMAIL> file # Sign then encrypt / Подписать затем зашифровать
gpg -se -r <EMAIL> file                       # Short form / Короткая форма

5. age — Modern Encryption

Generate Keys / Генерация ключей

age-keygen > key.txt                          # Generate key / Генерировать ключ
age-keygen -o key.txt                         # Save to file / Сохранить в файл

Encryption / Шифрование

age -p -o file.age file                       # Encrypt with password / Зашифровать паролем
age -p < file > file.age                      # Pipe encryption / Шифрование через pipe
age -r age1qqw... -o file.age file            # Encrypt with public key / Зашифровать публичным ключом
age -R recipients.txt -o file.age file        # Multiple recipients / Несколько получателей

Decryption / Расшифровка

age -d -o file file.age                       # Decrypt with password / Расшифровать паролем
age -d < file.age > file                      # Pipe decryption / Расшифровка через pipe
age -d -i key.txt -o file file.age            # Decrypt with key / Расшифровать ключом
age -d -i key.txt < file.age > file           # Pipe with key / Pipe с ключом

SSH Keys with age / SSH ключи с age

ssh-keygen -t ed25519 -C "age key"            # Generate SSH key / Генерировать SSH ключ
age -R ~/.ssh/id_ed25519.pub file > file.age  # Encrypt with SSH key / Зашифровать SSH ключом
age -d -i ~/.ssh/id_ed25519 file.age > file   # Decrypt with SSH key / Расшифровать SSH ключом

Multiple Recipients / Несколько получателей

age -r age1qqw... -r age1xyz... -o file.age file  # Encrypt for multiple / Зашифровать для нескольких
age -R recipients.txt -o file.age file        # Encrypt from file / Зашифровать из файла

6. Real-World Examples

Encrypt Directory / Зашифровать директорию

# GPG tar archive / GPG архив tar
tar -czf - directory/ | gpg -c -o directory.tar.gz.gpg

# age tar archive / age архив tar
tar -czf - directory/ | age -p > directory.tar.gz.age

# Decrypt and extract / Расшифровать и распаковать
gpg -d directory.tar.gz.gpg | tar -xzf -
age -d directory.tar.gz.age | tar -xzf -

Backup Encryption / Шифрование резервной копии

# GPG backup / GPG резервная копия
tar -czf - /home/<USER> | gpg -c -o backup-$(date +%F).tar.gz.gpg

# age backup / age резервная копия
tar -czf - /home/<USER> | age -p > backup-$(date +%F).tar.gz.age

# Automated backup with age / Автоматизированная резервная копия с age
age-keygen > ~/.backup-key.txt
tar -czf - /home/<USER> | age -r $(grep public ~/.backup-key.txt | cut -d: -f2) > backup.tar.gz.age

Password Manager / Менеджер паролей

# pass uses GPG / pass использует GPG
pass init <GPG_KEY_ID>                        # Initialize password store / Инициализировать хранилище паролей
pass insert email/gmail                       # Add password / Добавить пароль
pass show email/gmail                         # Show password / Показать пароль
pass generate email/yahoo 32                  # Generate password / Генерировать пароль

Git Commit Signing / Подписание коммитов Git

git config --global user.signingkey <KEY_ID>  # Set signing key / Установить ключ для подписи
git config --global commit.gpgsign true       # Auto-sign commits / Автоподпись коммитов
git commit -S -m "message"                    # Sign commit / Подписать коммит
git verify-commit HEAD                        # Verify commit / Проверить коммит

Encrypted Secrets / Зашифрованные секреты

# Store API keys / Хранить API ключи
echo "API_KEY=<SECRET_KEY>" | age -p > api.age
# Decrypt / Расшифровать
age -d api.age | source /dev/stdin

# Ansible vault alternative / Альтернатива Ansible vault
age -p < secrets.yml > secrets.yml.age
age -d secrets.yml.age > secrets.yml

SSH Over GPG / SSH через GPG

# Enable GPG SSH support / Включить поддержку SSH GPG
echo "enable-ssh-support" >> ~/.gnupg/gpg-agent.conf
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)

# List SSH keys / Список SSH ключей
ssh-add -L

Encrypted Email / Зашифрованная почта

# Encrypt email body / Зашифровать тело письма
echo "Secret message" | gpg --encrypt --armor -r <EMAIL> | mail -s "Encrypted" <EMAIL>

# Decrypt received email / Расшифровать полученное письмо
gpg --decrypt encrypted.asc

File Shredding / Безопасное удаление

# Encrypt then shred / Зашифровать затем уничтожить
gpg -c sensitive.txt
shred -vfz -n 10 sensitive.txt                # Securely delete / Безопасно удалить

Multi-Device Sync / Синхронизация между устройствами

# Export keys for sync / Экспортировать ключи для синхронизации
gpg --export-secret-keys --armor <KEY_ID> > secret.asc
gpg --export-ownertrust > trust.txt

# Import on new device / Импортировать на новом устройстве
gpg --import secret.asc
gpg --import-ownertrust trust.txt

Container Secrets / Секреты контейнеров

# Encrypt secrets for Docker / Зашифровать секреты для Docker
echo "DB_PASSWORD=<PASSWORD>" | age -p > secrets.age
# In Dockerfile: COPY secrets.age /app/
# Decrypt at runtime / Расшифровать во время выполнения
age -d /app/secrets.age | source /dev/stdin

7. Troubleshooting & Tools

GPG Agent Issues / Проблемы агента GPG

gpg-agent --daemon                            # Start agent / Запустить агента
gpgconf --kill gpg-agent                      # Restart agent / Перезапустить агента
gpg-agent --daemon --pinentry-program /usr/bin/pinentry-curses  # Specify pinentry / Указать pinentry

Trust Issues / Проблемы доверия

gpg --edit-key <KEY_ID>                       # Edit key / Редактировать ключ
# > trust                                     # Set trust / Установить доверие
# > 5                                         # Ultimate trust / Полное доверие
# > save                                      # Save / Сохранить

Expired Keys / Истёкший срок действия

gpg --edit-key <KEY_ID>                       # Edit key / Редактировать ключ
# > expire                                    # Change expiration / Изменить срок
# > key 1                                     # Select subkey / Выбрать подключ
# > expire                                    # Change subkey expiration / Изменить срок подключа
# > save                                      # Save / Сохранить

List Recipients / Список получателей

gpg --list-packets file.gpg                   # Show encryption info / Показать информацию о шифровании
gpg --batch --list-packets file.gpg | grep keyid  # Extract key IDs / Извлечь ID ключей

Key Management Tools / Инструменты управления ключами

Tool Description (EN / RU)
pass Password manager (GPG-based) / Менеджер паролей (на GPG)
gopass Enhanced pass / Улучшенный pass
rage Rust implementation of age / Rust-реализация age

8. Best Practices


GPG

age


On this page

GPG / age Sysadmin Cheatsheet 📚 Table of Contents / Содержание 1. Installation &amp; Configuration Install GPG / Установка GPG Install age / Установка age Configuration Paths / Пути конфигурации GPG vs age Comparison / Сравнение GPG и age 2. GPG Key Management Generate Keys / Генерация ключей List Keys / Список ключей Export Keys / Экспорт ключей Import Keys / Импорт ключей Delete Keys / Удаление ключей Edit Keys / Редактирование ключей Keyserver Operations / Операции с серверами ключей 3. GPG Encryption &amp; Decryption Symmetric Encryption / Симметричное шифрование Asymmetric Encryption / Асимметричное шифрование Decryption / Расшифровка Encrypt and Sign / Зашифровать и подписать 4. GPG Signing &amp; Verification Sign Files / Подписание файлов Verify Signatures / Проверка подписей Sign and Encrypt / Подписать и зашифровать 5. age — Modern Encryption Generate Keys / Генерация ключей Encryption / Шифрование Decryption / Расшифровка SSH Keys with age / SSH ключи с age Multiple Recipients / Несколько получателей 6. Real-World Examples Encrypt Directory / Зашифровать директорию Backup Encryption / Шифрование резервной копии Password Manager / Менеджер паролей Git Commit Signing / Подписание коммитов Git Encrypted Secrets / Зашифрованные секреты SSH Over GPG / SSH через GPG Encrypted Email / Зашифрованная почта File Shredding / Безопасное удаление Multi-Device Sync / Синхронизация между устройствами Container Secrets / Секреты контейнеров 7. Troubleshooting &amp; Tools GPG Agent Issues / Проблемы агента GPG Trust Issues / Проблемы доверия Expired Keys / Истёкший срок действия List Recipients / Список получателей Key Management Tools / Инструменты управления ключами 8. Best Practices 9. Documentation Links GPG age