Указать получателя (по email или id ключа) для шифрования.
gpg -e -r friend@mail file
--full-generate-key
Создать новую пару ключей с выбором типа, размера и срока.
gpg --full-generate-key
-s--sign
Подписать вместе с шифрованием.
gpg -e -s -r friend@mail file
--detach-sign
Сделать отдельную (detached) подпись файла.
gpg --detach-sign -a file
--verify
Проверить подпись файла.
gpg --verify file.asc file
--fingerprint
Показать отпечаток ключа — сверяй его при обмене ключами.
gpg --fingerprint you@mail
--export-a
Экспортировать публичный ключ (-a — в ASCII).
gpg --export -a you@mail > pub.asc
--import
Импортировать чужой публичный ключ из файла.
gpg --import pub.asc
--recv-keyskeyid
Получить публичный ключ с keyserver по его id.
gpg --recv-keys KEYID
--gen-revoke
Создать сертификат отзыва — заранее, на случай компрометации ключа.
gpg --gen-revoke you@mail > revoke.asc
--clearsign
Подписать текст, оставив его читаемым (подпись рядом, не отдельно).
gpg --clearsign message.txt
--export-secret-keys-a
Экспортировать приватный ключ — храни результат так же надёжно, как сам ключ. опасно
gpg --export-secret-keys -a you@mail > priv.asc
Ничего не найдено. Попробуй запрос короче.
Рецепты
1
Шифрование и подпись
bash
# симметрично (паролем, без ключей) — удобно для бэкапов
gpg -c secret.txt # → secret.txt.gpg (спросит пароль)
gpg --cipher-algo AES256 -c f # явный шифр
gpg -d secret.txt.gpg # расшифровать (вывод в stdout)# асимметрично (для получателя)
gpg -e -r friend@mail file # зашифровать публичным ключом получателя
gpg -e -s -r friend@mail file # зашифровать И подписать
gpg -d file.gpg > file # расшифровать своим приватным# подпись и проверка
gpg --detach-sign -a file # отдельная ASCII-подпись → file.asc
gpg --verify file.asc file # проверить подпись
gpg --clearsign message.txt # подпись внутри текста (читаемо)
Неполадки
5
СимптомПричина и решение
gpg: decryption failed: No secret key
Нет приватного ключа для этого получателя (шифровали не на твой ключ) или ключ не
импортирован. gpg --list-secret-keys.
Can't check signature: No public key
Нет публичного ключа автора. Импортируй (gpg --import/--recv-keys KEYID), затем
--verify. Сверь отпечаток (--fingerprint) по доверенному каналу.
Забыл пароль приватного ключа
Восстановить нельзя. Есть revocation-сертификат — отзови ключ; иначе генерируй новый
и переподпиши/перешифруй.
Inappropriate ioctl for device (в скриптах/CI)
GPG не может спросить пароль (нет TTY). --batch --pinentry-mode loopback
--passphrase-file pass.txt или настрой gpg-agent.
WARNING: ... not certified with a trusted signature
Ключ импортирован, но не доверен. Подпись валидна, просто нет «сети доверия». При
необходимости — gpg --edit-key KEYID → trust.
Опасно
2
Потеря приватного ключа или пароля к нему
Восстановить зашифрованные данные без приватного ключа (или пароль к нему)
невозможно — это не «забыл, но есть способ обойти», а криптографически
недостижимо. Сразу после генерации пары сделай gpg --gen-revoke (сертификат
отзыва) и gpg --export-secret-keys (бэкап приватного) и храни оба отдельно
от рабочей машины.
gpg --export-secret-keys в общий канал
Экспортированный приватный ключ — это сам ключ в текстовом виде (ASCII-armor
делает его похожим на безобидный текстовый файл). Отправка его в чат/тикет/
публичный репозиторий равносильна публикации пароля от всего, что этим ключом
защищено.
См. также
ssh-keys — Генерация ключей, authorized_keys, ssh-agent, права на файлы .ssh.
apt — Установка, обновление и удаление пакетов в Debian/Ubuntu; apt и dpkg.
openssl-tls — Проверка и выпуск сертификатов — openssl для диагностики, certbot для Let's Encrypt.