Команды GPG
Команды, не привязанные к конкретной функции
--version
Выводит информацию о версии программы и лицензировании. Обратите внимание, что эту команду нельзя сокращать.
--help
-h
Выводит сообщение о использовании, суммирующее наиболее полезные опции командной строки. Обратите внимание, что эту команду нельзя произвольно сокращать (хотя можно использовать её короткую форму -h
).
--warranty
Выводит информацию о гарантиях.
--dump-options
Выводит список всех доступных опций и команд. Обратите внимание, что эту команду нельзя сокращать.
Конечно, вот перевод и структурированная таблица с командами, а также примеры использования.
Команды для выбора типа операции
Команда (короткая) | Описание |
---|---|
--sign (-s ) |
Подписать сообщение. Можно комбинировать с --encrypt (для подписи и шифрования) и/или --symmetric . Ключ для подписи выбирается по умолчанию или задаётся опциями --local-user и --default-key . |
--clear-sign --clearsign |
Создать подпись в чистом тексте (cleartext signature). Содержимое читаемо без специального ПО, которое нужно только для проверки подписи. Может изменять пробельные символы в конце строк. |
--detach-sign (-b ) |
Создать отделённую подпись (detached signature). |
--encrypt (-e ) |
Зашифровать данные для одного или нескольких открытых ключей. Комбинируется с --sign и/или --symmetric . Получатели задаются опциями --recipient . |
--symmetric (-c ) |
Зашифровать симметричным шифром с использованием парольной фразы (по умолчанию AES-128). Комбинируется с --sign и/или --encrypt . Пароль кэшируется. |
--store |
Только сохранить (создать простой пакет literal data). |
--decrypt (-d ) |
Расшифровать файл, переданный в командной строке (или из STDIN) и записать в STDOUT. Если файл подписан, подпись также проверяется. |
--verify |
Проверить подпись файла, не выводя содержимое. Для проверки отделённой подписи нужно указать файл подписи и файл(ы) данных. |
--multifile |
Модифицирует другие команды (--verify , --encrypt , --decrypt ) для обработки нескольких файлов, переданных в командной строке или из STDIN. |
--verify-files |
Аналогично --multifile --verify . |
--encrypt-files |
Аналогично --multifile --encrypt . |
--decrypt-files |
Аналогично --multifile --decrypt . |
--list-keys (-k )--list-public-keys |
Вывести список указанных или всех открытых ключей. Не использовать для парсинга в скриптах (используйте --with-colons ). |
--list-secret-keys (-K ) |
Вывести список указанных или всех секретных ключей. # означает, что ключ не используется, > — ключ на смарт-карте. |
--check-signatures --check-sigs |
Аналогично --list-keys , но также проверяет и выводит подписи ключей. ! — хорошая подпись, - — плохая, % — ошибка проверки. |
--locate-keys --locate-external-keys |
Найти ключи по аргументам (использует те же методы, что и при шифровании). Вторая команда не ищет в локальных хранилищах. |
--show-keys |
Анализирует переданные ключи (не из ключевых колец) и выводит информацию о них, как --list-keys . |
--fingerprint |
Вывести список ключей вместе с их отпечатками. Если указать дважды, покажет отпечатки всех субключей. |
--list-packets |
Вывести только последовательность пакетов (для отладки). |
--edit-card --card-edit |
Открыть меню для работы со смарт-картой. |
--card-status |
Показать содержимое смарт-карты. |
--change-pin |
Позволить сменить PIN-код смарт-карты. |
--delete-keys |
Удалить ключ из открытого ключевого кольца. В пакетном режиме требуется --yes или указание отпечатка. |
--delete-secret-keys |
Удалить ключ из секретного ключевого кольца. В пакетном режиме требуется указание отпечатка. |
--delete-secret-and-public-key |
Удалить и секретный, и открытый ключ. |
--export |
Экспортировать указанные или все открытые ключи в STDOUT или файл. |
--send-keys |
Отправить указанные ключи на keyserver. |
--export-secret-keys --export-secret-subkeys |
Экспортировать секретные ключи. Вторая форма делает первичный ключ непригодным для использования (GNU расширение). |
--export-ssh-key |
Экспортировать ключ в формате OpenSSH. |
--import --fast-import |
Импортировать/объединить ключи в ключевое кольцо. |
--receive-keys --recv-keys |
Импортировать ключи с заданными keyIDs с keyserver’а. |
--refresh-keys |
Запросить обновления для существующих в ключевом кольце ключей с keyserver’а. |
--search-keys |
Найти ключи по именам на keyserver’е. |
--fetch-keys |
Загрузить ключи по указанным URI. |
--update-trustdb |
Обслуживание базы доверия (интерактивно, запрашивает ownertrust). |
--check-trustdb |
Обслуживание базы доверия без взаимодействия с пользователем. |
--export-ownertrust |
Экспортировать значения ownertrust (для резервного копирования). |
--import-ownertrust |
Импортировать значения ownertrust из файла. |
--rebuild-keydb-caches |
Перестроить кэши в ключевом кольце. |
--print-md --print-mds |
Вывести дайджест сообщения для указанного или всех алгоритмов. |
--gen-random |
Сгенерировать count случайных байт заданного уровня качества (0, 1, 2). |
--gen-prime |
Сгенерировать простое число. (Use the source, Luke :-)) |
--enarmor --dearmor |
Упаковать/распаковать произвольные данные в/из ASCII-armor OpenPGP. |
--unwrap |
Модифицирует --decrypt для вывода исходного сообщения без слоя шифрования (выводит структуру OpenPGP). |
--tofu-policy |
Установить политику TOFU (Trust On First Use) для указанных ключей. |
Конкретные примеры использования
1. Шифрование и подпись:
# Зашифровать и подписать файл 'document.txt' для получателя alice@example.com, используя свой ключ bob@example.com для подписи.
# Результат в файле 'document.txt.gpg'
gpg --encrypt --sign --recipient alice@example.com --local-user bob@example.com --output document.txt.gpg document.txt
# Короткая форма:
gpg -e -s -r alice@example.com -u bob@example.com -o document.txt.gpg document.txt
2. Создание и проверка отделённой подписи:
# Создать отделённую подпись для файла 'package.zip'
gpg --detach-sign --output package.zip.sig package.zip
# Проверить отделённую подпись
gpg --verify package.zip.sig package.zip
3. Симметричное шифрование:
# Зашифровать файл 'secret.txt' симметричным шифром с помощью пароля
gpg --symmetric --output secret.txt.gpg secret.txt
# Расшифровать полученный файл (gpg запросит пароль)
gpg --decrypt --output secret.txt secret.txt.gpg
4. Работа с ключами:
# Вывести список открытых ключей с отпечатками
gpg --list-keys --fingerprint
# Импортировать ключ из файла
gpg --import public_key.asc
# Экспортировать открытый ключ с ID 12345678 в файл
gpg --export --armor 12345678 > public_key.asc
# Обновить все ключи в ключевом кольце с keyserver'а
gpg --refresh-keys
5. Проверка подписи чистого текста:
# Проверить подпись файла 'message.txt.asc'
gpg --verify message.txt.asc
# Если нужно извлечь подписанное содержимое в файл 'message.txt'
gpg --output message.txt --decrypt message.txt.asc
Конечно, вот перевод, структурированная таблица и практические примеры.
Как управлять своими ключами
В этом разделе объясняются основные команды для управления ключами.
Таблица команд управления ключами
Команда (короткая) | Описание |
---|---|
--quick-generate-key --quick-gen-key |
Быстро сгенерировать стандартный ключ с одним ID пользователя. Без диалогов. |
--quick-set-expire |
Установить срок действия основного ключа (fpr ) и/или его субключей. |
--quick-add-key |
Добавить субключ к существующему ключу (по отпечатку fpr ). |
--quick-add-adsk |
Добавить Дополнительный Субключ для Расшифровки (ADSK) из другого ключа. |
--generate-key --gen-key |
Сгенерировать новую пару ключей, используя параметры по умолчанию (интерактивно). |
--full-generate-key --full-gen-key |
Сгенерировать новую пару ключей с диалогами для всех опций. |
--generate-revocation --gen-revoke |
Создать сертификат отзыва для всего ключа. |
--generate-designated-revocation --desig-revoke |
Создать назначенный сертификат отзыва (позволяет отозвать чужой ключ). |
--edit-key |
Основная команда для интерактивного управления ключами через меню. |
--sign-key |
Подписать открытый ключ вашим секретным ключом (ярлык для sign в --edit-key ). |
--lsign-key |
Подписать ключ с пометкой “не для экспорта” (ярлык для lsign ). |
--quick-sign-key --quick-lsign-key --quick-tsign-key |
Быстро подписать ключ без дополнительного взаимодействия. |
--quick-add-uid |
Добавить новый ID пользователя к существующему ключу. |
--quick-revoke-uid |
Отозвать ID пользователя на существующем ключе. |
--quick-revoke-sig |
Отозвать подписи ключей, сделанные указанным ключом. |
--quick-set-primary-uid |
Установить или обновить флаг основного ID пользователя. |
--quick-update-pref |
Обновить список предпочтений ключа до текущего значения по умолчанию. |
--quick-set-ownertrust |
Установить уровень доверия (ownertrust) для ключа. |
--change-passphrase --passwd |
Изменить парольную фразу секретного ключа. |
Ключевые понятия из --edit-key
:
sign
/lsign
/tsign
/nrsign
– Подписать ключ (обычная/локальная/доверительная/безотзывная).adduid
– Добавить user ID.addkey
– Добавить субключ.passwd
– Сменить парольную фразу.revkey
/revuid
– Отозвать субключ / user ID.expire
– Изменить срок действия.save
– Сохранить изменения и выйти.quit
– Выйти без сохранения.
Примеры использования
1. Быстрое создание ключа
# Создать ключ для Alice, который никогда не истекает, используя алгоритмы по умолчанию
gpg --quick-generate-key "Alice Lovelace <alice@example.com>" default default never
# Создать ключ для Bob с истечением через 1 год
gpg --quick-gen-key "Bob Babbage <bob@example.com>" default default 1y
# Создать ключ, защищённый паролем "secret", в пакетном режиме
echo "secret" | gpg --batch --pinentry-mode loopback --passphrase-fd 0 --quick-gen-key "Test User" default default
2. Управление сроком действия и субключами
# Установить срок действия основного ключа (с отпечатком XYZ123...) на 2025-12-31
gpg --quick-set-expire XYZ1234567890ABCDEFGH 2025-12-31
# Добавить субключ шифрования (алгоритм по умолчанию) к существующему ключу
gpg --quick-add-key XYZ1234567890ABCDEFGH default encr
# Добавить субключ для аутентификации (Ed25519) с истечением через 6 месяцев
gpg --quick-add-key XYZ1234567890ABCDEFGH ed25519 auth 6m
3. Работа с существующими ключами (подпись, отзыв)
# Подписать ключ с отпечатком ABCD... (все его user IDs)
gpg --quick-sign-key ABCD0987654321ABCD0987654321ABCD0987654321
# Подписать ключ, но только конкретный user ID ('=*@company.org' - точное совпадение)
gpg --quick-sign-key ABCD0987654321ABCD0987654321ABCD0987654321 "=*@company.org"
# Отозвать user ID 'old@email.com' у ключа 'user@example.com'
gpg --quick-revoke-uid "user@example.com" "old@email.com"
4. Импорт и экспорт
# Импортировать ключ из файла
gpg --import public_key.asc
# Экспортировать открытый ключ с отпечатком XYZ... в файл
gpg --export --armor XYZ1234567890ABCDEFGH > alice_public.asc
# Экспортировать секретный ключ для резервной копии (ОСТОРОЖНО!)
gpg --export-secret-keys --armor XYZ1234567890ABCDEFGH > alice_secret_backup.asc
5. Просмотр и проверка
# Показать список открытых ключей с отпечатками
gpg --list-keys --fingerprint
# Показать список секретных ключей
gpg --list-secret-keys
# Проверить подписи на всех ключах в ключевом кольце
gpg --check-signatures
6. Интерактивное управление через --edit-key
# Начать редактирование ключа (заменить 'user@example.com' на свой ID)
gpg --edit-key user@example.com
# В появившемся интерактивном меню (prompt: gpg>) можно использовать:
# gpg> adduid # Добавить новый user ID
# gpg> addkey # Добавить новый субключ
# gpg> passwd # Сменить пароль
# gpg> expire # Изменить срок действия
# gpg> key 1 # Выбрать первый субключ (для операций с ним)
# gpg> trust # Изменить уровень доверия
# gpg> save # Сохранить изменения и выйти
Конечно, вот подробная таблица всех субкоманд --edit-key
и дополнительные примеры.
Таблица субкоманд интерактивного меню --edit-key
Команда вводится после приглашения gpg>
.
Субкоманда | Описание |
---|---|
uid n |
Переключить выбор пользователя (user ID) или фотографии с индексом n . * — выбрать всех, 0 — отменить выбор всех. |
key n |
Переключить выбор субключа с индексом n или key ID n . * — выбрать все, 0 — отменить выбор всех. |
sign |
Создать подпись на ключе. Если ключ ещё не подписан вашим ключом по умолчанию, будет запрошено подтверждение. |
lsign |
То же, что sign , но подпись помечается как неэкспортируемая (local). |
nrsign |
То же, что sign , но подпись помечается как безотзывная (non-revocable). |
tsign |
Создать доверительную подпись (trust signature). Требует указания глубины цепи доверия и значения. |
delsig |
Удалить подпись с ключа. Не может отозвать подпись, уже отправленную публично. |
revsig |
Отозвать подпись. Для каждой вашей подписи будет предложено создать сертификат отзыва. |
check |
Проверить подписи на всех выбранных user IDs. С опцией selfsig показываются только самоподписи. |
adduid |
Добавить дополнительный user ID (имя и email). |
addphoto |
Добавить фотографию (JPEG) в качестве user ID. |
showphoto |
Показать выбранную фотографию user ID. |
deluid |
Удалить user ID или фотографию. Не может отозвать user ID, уже отправленный публично. |
revuid |
Отозвать user ID или фотографию. |
primary |
Пометить текущий user ID как основной. Снимает эту пометку с других user IDs. |
keyserver |
Установить предпочтительный keyserver для выбранных user IDs. "none" — удалить. |
notation |
Установить нотацию (name=value ) для выбранных user IDs. "none" — удалить все. |
pref |
Показать фактические предпочтения (шифры, хэши, сжатие) для выбранного user ID. |
showpref |
Показать предпочтения с учётом значений по умолчанию (более подробно). |
setpref [string] |
Установить список предпочтений. Без аргументов — сбросить на значения по умолчанию. "none" — очистить. |
addkey |
Добавить новый субключ к основному ключу. |
addcardkey |
Сгенерировать субключ на смарт-карте и добавить его к этому ключу. |
keytocard |
Перенести выбранный секретный субключ на смарт-карту. Ключ в keyring будет заменён на заглушку. |
bkuptocard file |
Восстановить ключ из файла-бэкапа на новую смарт-карту. |
keytotpm |
Перенести выбранный секретный ключ в форму, защищённую TPM (Trusted Platform Module). |
delkey |
Удалить публичную часть субключа. Не может отозвать субключ, уже отправленный публично. |
revkey |
Отозвать субключ. |
expire |
Изменить срок действия основного ключа или выбранного субключа. |
trust |
Изменить уровень доверия (ownertrust) для ключа. Изменения в trustdb применяются сразу. |
disable |
Отключить весь ключ. Отключённый ключ нельзя использовать. |
enable |
Включить ключ. |
addrevoker |
Добавить назначенного отзывающего (designated revoker) для ключа. Опция "sensitive" — не экспортировать по умолчанию. |
addadsk |
Добавить Дополнительный Субключ для Расшифровки (Additional Decryption Subkey) с другого ключа. |
passwd |
Изменить парольную фразу для секретного ключа. |
toggle |
Пустая команда для обратной совместимости. |
clean |
Очистить ключ: удалить невалидные, устаревшие, отозванные подписи и подписи от отсутствующих ключей. |
minimize |
Сжать ключ до минимального размера, оставив для каждого user ID только последнюю самоподпись. |
change-usage |
Изменить флаги использования (возможности) основного ключа или субключей (например, добавить Authenticate ). |
cross-certify |
Добавить перекрёстные сертифицирующие подписи на подписывающие субключи для защиты от атак. |
save |
Сохранить все изменения в ключевое кольцо и выйти. |
quit |
Выйти без сохранения изменений. |
Примеры использования --edit-key
1. Базовое управление ключом
# Начать редактирование ключа для alice@example.com
gpg --edit-key alice@example.com
# В интерактивном меню:
gpg> adduid # Добавить новый user ID (запрос имени и email)
Real name: Alice Lovelace
Email address: alice@work.com
Comment: Work account
(Подтвердить)
gpg> uid 2 # Выбрать второй user ID (только что добавленный)
gpg> primary # Сделать его основным
gpg> passwd # Изменить парольную фразу
gpg> save # Сохранить изменения и выйти
2. Управление субключами
gpg --edit-key bob@example.com
gpg> addkey # Добавить новый субключ
Please select what kind of key you want:
(3) DSA (sign only)
(4) RSA (sign only)
(5) Elgamal (encrypt only)
(6) RSA (encrypt only)
(7) DSA (set your own capabilities)
(8) RSA (set your own capabilities)
(10) ECC (sign only)
(11) ECC (set your own capabilities)
(12) ECC (encrypt only)
(13) Existing key
Your selection? 6 # Выбираем RSA (только шифрование)
What keysize do you want? 4096 # Указываем размер ключа
Key is valid for? 1y # Указываем срок действия (1 год)
(Подтвердить создание)
gpg> key 1 # Выбрать первый субключ (для операций с ним)
gpg> expire # Изменить его срок действия
Key is valid for? (0) 0
Key does not expire at all
Is this correct? (y/N) y # Сделать бессрочным
gpg> revkey # ОТОЗВАТЬ этот субключ (если он скомпрометирован)
gpg> save
3. Подписание чужих ключей и управление доверием
# Предполагается, что ключ друга уже импортирован
gpg --edit-key friend@example.com
gpg> sign # Подписать ключ друга
... Вывод информации о ключе и его отпечатка ...
Really sign? (y/N) y # Подтверждаем подписание
gpg> tsign # Создать доверительную подпись
Enter the depth of this trust signature (1-255): 1
Enter the trust value (60=marginal, 120=full, 0-255): 120
Enter a domain name (optional): our-community.org
Really sign? (y/N) y
gpg> trust # Изменить уровень доверия к владельцу ключа
Your decision? 5 # Указываем: "I trust ultimately"
gpg> save
4. Работа со смарт-картой (YubiKey и аналоги)
gpg --edit-key mykey@example.com
gpg> keytocard # Перенести выбранный секретный ключ на карту
Please select where to store the key:
(1) Signature key
(2) Encryption key
(3) Authentication key
Your selection? 1 # Переносим подписывающий ключ в слот для подписи
(Введите пароль админа карты)
gpg> key 1 # Выбрать следующий ключ
gpg> keytocard
Your selection? 2 # Переносим шифрующий ключ в слот для шифрования
gpg> save # Секретные ключи теперь на карте, в keyring - заглушки
5. Отзыв компонентов ключа
# Ключ скомпрометирован, нужно отозвать старый email и создать сертификат отзыва
gpg --edit-key compromised@example.com
gpg> uid 1 # Выбрать user ID со старым email
gpg> revuid # ОТОЗВАТЬ этот user ID
Create a revocation certificate for this user ID? (y/N) y
Enter the reason for the revocation: 1 # 1 = Key has been compromised
Enter an optional description; ...:
(Подтвердить)
gpg> genrevoke # Создать сертификат отзыва для всего ключа
Create a revocation certificate? (y/N) y
Enter the reason for the revocation: 1
... (Описание) ...
Вывод ASCII-armored сертификата отзыва
Сохранить его в надёжное место!
gpg> quit # Пока не сохраняем изменения, только создали сертификат
# Позже, чтобы применить отзыв, импортируем сертификат
gpg --import revocation_certificate.asc