Как я могу перезапустить 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
Удачи !