ssh-agent
очень просто в использовании, я запускаю его и добавляю использование ключей ssh-add keyfile
. После уничтожения процесса ssh-agent
, всех файлов не стало.
Как я могу получить то же поведение с gpg-agent
? Самая близкая программа, которую я нашел, была gpg-preset-passphrase
. Но смотря на страницу руководства gpg-agent
, кажется, что каталог создается для хранения закрытых ключей.
Я мог быть неправым, таким образом, я задаюсь вопросом, как я могу установить gpg-agent
таким способом, которым не создаются никакие файлы / каталоги? Если это не возможно, другие предложения для создания gpg-agent
работа как ssh-agent
+ ssh-add
приветствовалось бы также. Я не ищу решения GUI как Морской конек.
Я решил взглянуть на это снова и узнал, как это работает. 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-агента затем.
Некоторые бонусные подсказки:
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