Як налаштувати gpg для введення парольної фрази лише один раз за сеанс


18

Чи можливо налаштувати gpgтак, щоб я вводив парольну фразу лише один раз, і вона буде працювати протягом усього сеансу (я використовую Ubuntu/XFce)?

Я не впевнений, як це gpgпрацює, здається, що за замовчуванням функція полягає в тому, що gpgзапитує gpg-agentпарольну фразу, і агент виконує PIN-запис, щоб запитувати пароль.

Мені хотілося б використовувати прокляття прокляття лише один раз на сеанс, тому я можу вставити свою парольну фразу (у мене є hexрядок із речення - я використовую echo -n <SENTENCE> | str-hex) та підписати електронну пошту від Claws Mail, не вводячи парольну фразу (не можна використовувати чіткі прокльони Claws Пошта).

Відповіді:


16

Ви можете використовувати техніку, описану на цій сторінці:

http://fvue.nl/wiki/Debian_4.0:_Installing_gpg-agent

Ось суть:

  1. Встановіть gpg-агент і програму:

    sudo apt-get install gnupg-agent pinentry-curses
    
  2. Додайте рядки нижче до ~/.profile. Будь-яка оболонка, що підтверджує POSIX, повинна містити цей файл.

    # Invoke GnuPG-Agent the first time we login.
    # Does `~/.gpg-agent-info' exist and points to gpg-agent process accepting signals?
    if test -f $HOME/.gpg-agent-info && \
        kill -0 `cut -d: -f 2 $HOME/.gpg-agent-info` 2>/dev/null; then
        GPG_AGENT_INFO=`cat $HOME/.gpg-agent-info | cut -c 16-`
    else
        # No, gpg-agent not available; start gpg-agent
        eval `gpg-agent --daemon --no-grab --write-env-file $HOME/.gpg-agent-info`
    fi
    export GPG_TTY=`tty`
    export GPG_AGENT_INFO
    

    Цей маленький сценарій буде активовано під час входу. Якщо агент не працює, він буде запущений. Коли агент запускається, він показує, як встановити змінні середовища для підключення до нього. Сценарій зберігає ці значення в ~/.gpg-agent-info, щоб при запуску чергового сеансу входу скрипт міг правильно встановити змінні та використовувати цей агент.

Вам потрібно буде вводити свою парольну фразу лише один раз під час завантаження. Агент зберігатиме ваші ключі в пам'яті, тому вам більше не доведеться вводити пароль.


Я щасливо використовував цей сценарій, але він вийшов випадковим чином. Врешті-решт, я змінив умовне на це, GPG_PROCESS=`cut -d: -f 2 $HOME/.gpg-agent-info` if test -f $HOME/.gpg-agent-info && \ kill -0 ${GPG_PROCESS} 2>/dev/null && \ [[ ${GPG_PROCESS} == `pgrep -x -u "${USER}" gpg-agent` ]] ; thenі воно спрацювало чудово. Проблема полягає в тому, що вищезазначений скрипт перевіряє, чи не працює процес .gpg-agent-infoі чи приймає сигнали kill -0. Якщо процес є, але ні gpg-agent, ми отримуємо неправильну поведінку. Код, що додається, перевіряє правильність процесу.
wyer33
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.