Агент для ключей gpg-agent

Агент для ключей gpg-agent.

Содержание

1 Общая информация

1.1 Отличия gpg-agent от ssh-agent

  • Можно выбирать, какие конкретно ключи хранить в агенте и они там будут храниться после перезагрузки.
  • Для каждого ключа можно отдельно задать время жизни доступа к нему и дополнительное подтверждение на использование.
  • У gpg-agent есть дополнительный уровень защиты — пароль на доступ к ключу.
  • Есть GUI для контроля доступа.

2 Установка

2.1 Gentoo

  • Установим gpg:
    1emerge app-crypt/gnupg
    
  • Установим приложение для ввода пароля:
    1emerge 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):
    1unset SSH_AGENT_PID
    2if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
    3  export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
    4fi
    

4.2 Добавление поддержки в gpg-agent

  • Включим поддержку ssh:
    1echo enable-ssh-support >> ~/.gnupg/gpg-agent.conf
    

4.3 Добавление ключей

  • Идентификаторы одобренных для агента ключей сохраняются в ~/.gnupg/sshcontrol.
  • Рекомендуется отключить в /etc/ssh/ssh_config, ~/.ssh/config опцию AddKeysToAgent, ответственную за автоматическое добавление ключей ssh.
  • Их можно туда добавлять вручную или через ssh-add:
    1ssh-add ~/.ssh/id_rsa
    2ssh-add ~/.ssh/id_ed25519
    3ssh-add ~/.ssh/id_ecdsa
    
  • Сначала ssh спросит парольную фразу для ключа, после чего появится диалог, где нужно выбрать пароль для шифрования ключа в агенте, обычно это простая короткая фраза (не пароль к ключу).

Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры теории вероятностей и кибербезопасности

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие