Агент для ключей gpg-agent
Агент для ключей gpg-agent.
Содержание
1 Общая информация
1.1 Отличия gpg-agent от ssh-agent
- Можно выбирать, какие конкретно ключи хранить в агенте и они там будут храниться после перезагрузки.
- Для каждого ключа можно отдельно задать время жизни доступа к нему и дополнительное подтверждение на использование.
- У gpg-agent есть дополнительный уровень защиты — пароль на доступ к ключу.
- Есть GUI для контроля доступа.
2 Установка
2.1 Gentoo
- Установим gpg:
emerge app-crypt/gnupg
- Установим приложение для ввода пароля:
emerge app-crypt/pinentry
2.2 Fedora
3 Структура
3.1 Сокеты
- gnupg предоставляет пользовательские сокеты systemd, которые включены по умолчанию: gpg-agent.socket, gpg-agent-extra.socket, gpg-agent-browser.socket, gpg-agent-ssh.socket и dirmngr.socket
- основной сокет
gpg-agent.socket
используется gpg для подключения к демонуgpg-agent
; gpg-agent-extra.socket
— настройка переадресации Unix-сокета с удалённой системы, что позволяет использоватьgpg
на удалённой системе без передачи на неё закрытых ключей;gpg-agent-browser.socket
позволяет веб-браузерам обращаться к демонуgpg-agent
;gpg-agent-ssh.socket
может использоваться SSH для кэширования ключей SSH, добавленных программой ssh-add;dirmngr.socket
запускает демон GnuPG, обрабатывающий соединения с серверами ключей.
- основной сокет
4 Работа с ключами ssh
- gpg-agent поддерживает эмуляцию агента OpenSSH.
4.1 Установка SSH_AUTH_SOCK
- Установите переменные окружения (в
~/.bashrc
):unset SSH_AGENT_PID if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)" fi
4.2 Добавление поддержки в gpg-agent
- Включим поддержку ssh:
echo enable-ssh-support >> ~/.gnupg/gpg-agent.conf
4.3 Добавление ключей
- Идентификаторы одобренных для агента ключей сохраняются в
~/.gnupg/sshcontrol
. - Рекомендуется отключить в
/etc/ssh/ssh_config
,~/.ssh/config
опциюAddKeysToAgent
, ответственную за автоматическое добавление ключей ssh. - Их можно туда добавлять вручную или через
ssh-add
:ssh-add ~/.ssh/id_rsa ssh-add ~/.ssh/id_ed25519 ssh-add ~/.ssh/id_ecdsa
- Сначала
ssh
спросит парольную фразу для ключа, после чего появится диалог, где нужно выбрать пароль для шифрования ключа в агенте, обычно это простая короткая фраза (не пароль к ключу).