pass. Хранение ключей gpg
2026-07-27
·
3 мин. для прочтения
pass. Хранение ключей gpg
Содержание
1 Общая информация
- Для хранения GPG-ключей в pass подход аналогичен SSH (см. pass. Хранение ключей ssh).
- Но есть специфика GPG.
- GPG-ключи обычно привязаны к идентичностям (email, имя) и используются для шифрования, подписи и аутентификации.
- Хранить их в gopass удобно как резервную копию или для переноса между машинами.
- Можно хранить только приватные ключи (публичные легко восстановить из приватного), но лучше сохранять оба для удобства.
2 Структура хранения
- Можно группировать ключи по владельцу/идентичности или назначению (например, рабочие и личные):
gpg/
├── identities/
│ ├── work@company.com/
│ │ ├── private.asc
│ │ └── public.asc
│ └── personal@gmail.com/
│ ├── private.asc
│ └── public.asc
└── subkeys/
├── signing/
│ ├── private.asc
│ └── public.asc
└── encryption/
├── private.asc
└── public.asc
3 Экспорт GPG-ключей
- Перед сохранением экспортируйте ключи в текстовый формат (armor), который можно вставить в gopass.
3.1 Приватный ключ
gpg --export-secret-keys --armor <key-id или email> > ~/private_key.asc
3.2 Публичный ключ
gpg --export --armor <key-id или email> > ~/public_key.asc
- Субключи (если у вас раздельные ключи для подписи и шифрования) экспортируйте отдельно с опцией
--export-options export-minimalили используйте идентификаторы субключей.
4 Сохранение в gopass
Для каждого ключа создайте запись (в редакторе):
# Приватный ключ gopass insert gpg/identities/work@company.com/private.asc # Вставьте содержимое private_key.asc (включая -----BEGIN PGP PRIVATE KEY BLOCK----- ...) # Публичный ключ gopass insert gpg/identities/work@company.com/public.asc # Вставьте содержимое public_key.ascМожно сохранить ключи из командной строки:
gopass insert -f gpg/identities/work/private.asc < ~/private_key.asc gopass insert -f gpg/identities/work/public.asc < ~/public_key.asc
5 Извлечение и импорт ключей
- Когда нужно восстановить ключ на новой машине или временно использовать.
5.1 Восстановить в систему
- Извлеките содержимое и передайте в
gpg --import:gopass show gpg/identities/work@company.com/private.asc | gpg --import gopass show gpg/identities/work@company.com/public.asc | gpg --import
5.2 Временное использование без импорта
- GPG не поддерживает прямую работу с ключами из памяти, как ssh-agent.
- Однако можно сохранить во временный файл и использовать с опцией
--keyring:
TMP_KEY=$(mktemp)
gopass show gpg/identities/work/private.asc > "$TMP_KEY"
gpg --homedir /tmp/gpg_temp --import "$TMP_KEY"
gpg --homedir /tmp/gpg_temp --list-keys
# ... используйте с --homedir
6 Управление несколькими GPG-ключами
6.1 Выбор ключа по умолчанию
- В
~/.gnupg/gpg.confможно указатьdefault-key <key-id>.
6.2 Использование разных ключей для разных задач
- Например, один ключ для подписи коммитов в Git, другой для шифрования файлов.
- Настройте
git config user.signingkeyиgpg.confсоответственно.
7 Автоматизация импорта всех ключей при входе в систему
- Создайте скрипт
import-gpg-keys.sh, который будет извлекать все приватные ключи из gopass и импортировать их:
#!/bin/bash
for key in $(gopass list gpg/identities/ | grep '/private.asc$'); do
echo "Импорт $key"
gopass show "$key" | gpg --import
done
Можно добавить его в
.bashrcили.profile.Если ключи в gopass зашифрованы вашим GPG-ключом, то при импорте они будут расшифрованы автоматически
8 Пример
- Допустим, у вас есть рабочий ключ
work@company.comи личныйpersonal@gmail.com.
# Экспорт с текущей машины
gpg --export-secret-keys --armor work@company.com > work_private.asc
gpg --export --armor work@company.com > work_public.asc
gpg --export-secret-keys --armor personal@gmail.com > personal_private.asc
gpg --export --armor personal@gmail.com > personal_public.asc
# Сохранение в gopass
gopass insert gpg/identities/work/private.asc < work_private.asc
gopass insert gpg/identities/work/public.asc < work_public.asc
gopass insert gpg/identities/personal/private.asc < personal_private.asc
gopass insert gpg/identities/personal/public.asc < personal_public.asc
# Проверка
gopass show gpg/identities/work/public.asc | head -n 5
# На новой машине
gopass show gpg/identities/work/private.asc | gpg --import
gopass show gpg/identities/personal/private.asc | gpg --import
# Установить доверие
gpg --edit-key work@company.com trust quit
9 Хранение только приватных ключей
- Публичные ключи можно восстановить из приватных командой
gpg --export, поэтому можно хранить только приватные, а публичные генерировать при необходимости.
