Как я использую gpg-агент в качестве с ssh-agent+ssh-add?

ssh-agent очень просто в использовании, я запускаю его и добавляю использование ключей ssh-add keyfile. После уничтожения процесса ssh-agent, всех файлов не стало.

Как я могу получить то же поведение с gpg-agent? Самая близкая программа, которую я нашел, была gpg-preset-passphrase. Но смотря на страницу руководства gpg-agent, кажется, что каталог создается для хранения закрытых ключей.

Я мог быть неправым, таким образом, я задаюсь вопросом, как я могу установить gpg-agent таким способом, которым не создаются никакие файлы / каталоги? Если это не возможно, другие предложения для создания gpg-agent работа как ssh-agent + ssh-add приветствовалось бы также. Я не ищу решения GUI как Морской конек.

15
задан 23 June 2011 в 03:22

1 ответ

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

  • Время для хранения пароля, так как ключ был первоначально добавлен.
  • Время для хранения пароля, так как к этому в последний раз получили доступ.

Кроме того, два изменения существуют для обоих ограничений, один для ключей GPG и один для ключей SSH (если поддержка была включена).

Записи страницы соответствующего руководства от gpg-agent(1):

   --default-cache-ttl n
          Set  the  time a cache entry is valid to n seconds.  The default
          is 600 seconds.

   --default-cache-ttl-ssh n
          Set the time a cache entry used for SSH keys is valid to n  sec‐
          onds.  The default is 1800 seconds.

   --max-cache-ttl n
          Set the maximum time a cache entry is valid to n seconds.  After
          this time a cache entry will be expired  even  if  it  has  been
          accessed recently.  The default is 2 hours (7200 seconds).

   --max-cache-ttl-ssh n
          Set the maximum time a cache entry used for SSH keys is valid to
          n seconds.  After this time a cache entry will be  expired  even
          if  it has been accessed recently.  The default is 2 hours (7200
          seconds).

Пароли всегда кэшируются (в памяти, не на диске! Проверенный с мерзавцем repo $HOME), таким образом, нет никакой явной потребности в ssh-add. Например, подписание фиктивных данных уже инициировало кэш:

$ echo | gpg -s >/dev/null
(passphrase requested
$ echo | gpg -s >/dev/null
(signing proceeds without asking for passphrase)

Для внесения постоянных изменений в параметры кэширования gpg-агента отредактируйте ~/.gnupg/gpg-agent.conf' и добавьте что-то как:

default-cache-ttl  60     # Expire GPG keys when unused for 1 minute
max-cache-ttl     600     # Expire GPG keys after 10 minutes since addition

Я попытался включить поддержку агента SSH путем определения enable-ssh-support, но это заставляет gpg-агент попросить, чтобы Вы другой ключ зашифровали ключ и затем хранит Ваш закрытый ключ в ~/.gnupg/private-keys.d/. Никакие не идут для меня, я буду придерживаться двойного ssh-агента / подход gpg-агента затем.

Некоторые бонусные подсказки:

  • Агент SSH, эквивалентный из max-cache-ttl-ssh может быть указан при добавлении ключа, например: ssh-add -t 600 ~/.ssh/id_rsa
  • Для предотвращения хранения пароля GPG в агенте отключите агент. В более новых версиях GPG опция --no-use-agent проигнорирован, но можно препятствовать тому, чтобы агент использовался путем очистки связанной переменной среды. Некоторые способы сделать так:

    echo | GPG_AGENT_INFO= gpg -s         # temporary
    export GPG_AGENT_INFO=; echo | gpg -s # until the current shell is closed
    
13
ответ дан 23 November 2019 в 02:48

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

Похожие вопросы: