Gpg-agent - это программа, которая работает в фоновом режиме ( демон ) и хранит секретные ключи GPG в памяти. Когда процессу GPG требуется ключ, он связывается с запущенной программой gpg-agent через сокет и запрашивает ключ. Если процесс агента имеет ключ, он предоставляет его gpg. Если это не так, он пытается загрузить зашифрованный ключ из вашей связки ключей и запрашивает у вас пароль. Как только агент получил расшифрованный ключ, он передает его процессу gpg. В дополнение к ключам GPG, Gpg-agent может аналогичным образом хранить ключи SSH и предоставлять их процессам SSH, подобно ssh-agent
программе, которая поставляется с SSH.
Суть использования ключевого агента заключается в том, что вам не нужно вводить парольную фразу каждый раз, когда вы используете ключ. Агент хранит ключ в памяти от одного раза к другому. Сама GPG не может этого сделать, потому что процесс завершается, как только он выполняет свою работу.
Еще одна вещь, которую может сделать ключевой агент, - это разрешить GPG, запущенному на удаленной машине, получать ключи в локальном агенте (который может загружать их из локального файла и запрашивать вашу фразу-пароль). Gpg-agent пока не может этого сделать, это запланированная функция . У SSH очень долгое время была пересылка агентов. (Это причина не использовать gpg-agent для ключей SSH.)
GPG 1.x или 2.0.x знает, что агент работает, потому что GPG_AGENT_INFO
переменная установлена. Эта переменная содержит расположение сокета для связи с агентом, а также идентификатор процесса агента. GPG 2.1 всегда помещает сокет агента в ~/.gnupg
. GPG 2.x всегда запускает процесс агента, если он не запущен.
Вы можете запустить агент просто запустив gpg-agent
. Если вы хотите сохранить процесс агента как часть вашего сеанса, вы можете заменить вызов вашего менеджера сеанса на gpg-agent my-session-manager
; некоторые дистрибутивы устанавливают это автоматически. GPG автоматически запустит агент, а GPG 2.1 дополнительно найдет работающий агент без необходимости использования переменной среды, поэтому вам не нужно запускать его таким образом, если вы не используете более старую версию GPG или не используете агент для хранения других типов. ключей, таких как SSH.
Вы можете отправить команды агента с помощью командыgpg-connect-agent
оболочки. Отправьте kill
команду, чтобы убить процесс агента (или отправьте ему сигнал).
Gpg-агент поставляется с самой GPG. Некоторые дистрибутивы упаковывают его отдельно.