Вики / Базовые команды
GPG (шифрование и подписи)
Ключи GPG, шифрование файлов, подписи и проверка, симметричный режим.
GPG (GnuPG) — шифрование и цифровые подписи. Применения: зашифровать файл, подписать релиз/коммит, проверить подпись пакета/репозитория (apt использует GPG для верификации).
Как и SSH, это асимметрия: публичный ключ для шифрования/проверки, приватный — для расшифровки/подписи.
gpg --list-keys # публичные ключи в связке
gpg --list-secret-keys --keyid-format long # приватные (+ длинный keyid)
gpg --full-generate-key # создать пару (выбрать тип/размер/срок)
gpg --quick-generate-key "Имя <you@mail>" ed25519 sign,encrypt 1y # быстро
gpg --fingerprint you@mail # отпечаток (сверять при обмене!)
gpg --export -a you@mail > pub.asc # экспорт публичного (ASCII -a)
gpg --export-secret-keys -a you@mail > priv.asc # бэкап приватного (храни надёжно!)
gpg --import pub.asc # импорт чужого публичного
gpg --send-keys KEYID # опубликовать на keyserver
gpg --recv-keys KEYID # получить чужой с keyserver
gpg --gen-revoke you@mail > revoke.asc # сертификат отзыва (на случай компрометации)
# симметрично (паролем, без ключей) — удобно для бэкапов
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 # подпись внутри текста (читаемо)
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.
gpg -c file ; gpg -d file.gpg # симметрично (пароль)
gpg -e -s -r who file ; gpg -d file.gpg # для получателя (+подпись)
gpg --detach-sign -a file ; gpg --verify file.asc file
gpg --fingerprint ; gpg --import pub.asc ; gpg --recv-keys KEYID
gpg --export-secret-keys -a me > priv.asc # БЭКАП приватного (надёжно!)
См. также
- SSH-ключи и ssh-agent — Сеть
- TLS-сертификаты (openssl, Let's Encrypt) — Сеть
- apt / dpkg (пакеты) — Пакеты