Я использую Ubuntu 16.04.2 LTS и в настоящее время испытываю потрясающий менеджер окон (я еще не настроил потрясающий файл конфигурации и использование по умолчанию).
Одна из вещи, которая не работает на меня, - то, что пароль в настоящее время не кэшируется gpg-агентом.
Я сделал следующее в .xsessionrc файле,
# GnuPG agent (avoid repeatedly putting passphrase)
gnupglog="${HOME}/.gnupg/gpg-agent.info"
if (pgrep -u "${USER}" gpg-agent); then
eval `cat ${gnupglog}`
eval `cut -d= -f1 ${gnupglog} | xargs echo export`
else
eval `gpg-agent --enable-ssh-support --daemon`
fi
Я вижу, что агент запустился. Однако после выполнения команды как gpg --decrypt FILE
через терминал не выталкивает диалоговое окно UI, и вместо этого он спрашивает меня пароль через терминал. Также это не кэшируется.
Брелок для ключей гнома работает отлично, если я использую тире Единицы по умолчанию. Можно ли предложить, чтобы шаги вложили gpg-агент, работающий потрясающий?
Я нашел первопричину проблемы. gpg-агент должен автоматически установить $GPG_AGENT_INFO во время вызова, но он не устанавливает огибающую переменную. Так же файл gpg-agent.info не присутствовал, как упомянуто в вышеупомянутом сообщении следовательно, вышеупомянутый код не работал. Согласно gpg документации GPG_AGENT_INFO должен указать на файл сокета gpg-агента, сопровождаемый pid gpg-агента и затем протокола (значение по умолчанию 1). Эти три поля должны быть разделены двоеточием.
Таким образом, я поместил следующий код в свой ~/.profile для решения проблемы (файл S.gpg-агента является файлом сокета, созданным gpg-агентом после того, как это запускается), Код:
if (pgrep -u "${USER}" gpg-agent); then
export GPG_AGENT_PID=`pgrep -u ${USER} gpg-agent`
export GPG_AGENT_INFO=${HOME}/.gnupg/S.gpg-agent:${GPG_AGENT_PID}:1
else
eval `gpg-agent --enable-ssh-support --daemon`
export GPG_AGENT_PID=`pgrep -u ${USER} gpg-agent`
export GPG_AGENT_INFO=${HOME}/.gnupg/S.gpg-agent:${GPG_AGENT_PID}:1
fi
Тем не менее я не уверен, почему gpg-агент не может установить GPG_AGENT_INFO.