Как я могу перезапустить gpg-agent?

Некоторые изменения в конфигурации GnuPG требуют gpg-agent перезагрузка / перезагрузка, но... Как я могу это сделать? Я старался gpg-agent restart, service gpg-agent restart, но не удалось.

8 ответов

Решение

С текущей GPG (2.1+), чтобы остановить gpg-agent ты можешь использовать gpgconf --kill, как это:

gpgconf --kill gpg-agent

Вам не нужно перезапускать его вручную. GPG перезапустит его, когда это будет необходимо.

Мой предпочтительный путь с gpg-connect-agent reloadagent /bye, Увидеть gpg-connect-agent help /bye для полного списка команд.

В современных дистрибутивах Linux на основе systemd gpg-agent контролируется пользовательским пространством systemd.

Вы можете проверить / запустить / остановить его с помощью следующих команд (без sudo):

systemctl --user status gpg-agent
systemctl --user stop gpg-agent
systemctl --user start gpg-agent

gpg-agent не является общесистемной службой, но запускается один раз для каждого пользователя (таким образом, она не управляется service). Хотя иногда он вызывается точечными файлами пользователя или, по крайней мере, в Debian и его производных, также при запуске X11 (и gpg-agent установлен) в /etc/X11/Xsession.d/90gpg-agent (чтобы убедиться, что общий gpg-agent используется всеми вызовами GnuPG, независимо от того, из терминала или из приложений с графическим интерфейсом); он также запускается автоматически GnuPG при необходимости. От man gpg-agent:

Агент автоматически запускается по требованию gpg, gpgsm, gpgconf или gpg-connect- agent. Таким образом, нет причин запускать его вручную. Если вы хотите использовать включенный агент Secure Shell, вы можете запустить агент, используя:

gpg-connect-agent /bye

Обычно простой killall gpg-agent (из некорневой оболочки) должно быть хорошо для завершения gpg-agent, Вероятно, вы заметите небольшую задержку при использовании GnuPG в следующий раз, так как gpg-agent запускается снова.

По моему опыту, есть несколько сценариев, когда gpg не сможет запустить новый агент gpg (импортировать новый ключ?).

Убей старого агента так:

GNUPGHOME="${GNUPGHOME:-$HOME/.gnupg}" gpgconf --kill gpg-agent

и затем начните новый:

gpg-agent --homedir "${GNUPGHOME:-$HOME/.gnupg}" --daemon

Явная установка --homedir при запуске гарантирует, что ваш список ps ясен, когда у вас более одного homedir; и это аналогично тому, что делает gpg, когда запускает его.

Установка GNUPGHOME при остановке не требуется, но это может сделать вас или рецензента кода более удобным.

В моем случае --kill был недопустимым аргументом в пользу gpgconf. Это сработало:

killall gpg-agent || true
gpg-agent --daemon --use-standard-socket

Ни одно из решений не помогло мне. Поэтому я просто удалил каталог. Затем запустил мой (который содержитgpg decryptкоманда), которая автоматически воссоздала/home/my_user/.gnupgкаталог и создалsecring.gpgиpubring.gpgвнутри этого каталога.

Теперь мне просто нужно было импортировать мои ключи, например:

      # importing public key
gpg --import my_public_key.pub

# importing private key
gpg --allow-secret-key-import --import my_private_key.private

Наконец, я перезапустил свойbash_script.shкоторый показал мне графический интерфейс, который предложил мне ввести парольную фразу, чтобы использовать мои ключи для расшифровки файлов.

Я сталкиваюсь с этой проблемой слишком часто, и каждый раз просто перезапуск агента работает. Для окон-

      gpg-connect-agent reloadagent /bye

Для Линукса -

      systemctl --user reload gpg-agent

Удачи !

Другие вопросы по тегам