Добавьте "tmux" к своему .zshrc файлу, который выполняется каждый раз, когда Вы запускаете zsh. Быстрый путь:
echo tmux >> ~/.zshrc
Вы не можете делать это, по крайней мере еще, или по крайней мере не в общем случае. Однако я совместно использую то, что я изучил и надеюсь обновить этот ответ в свое время.
В первую очередь, в отличие от этого, ssh-agent
возможность, который на самом деле закрытые ключи кэшей, gpg-agent
может кэшировать или ключи или пароли. Это до каждого клиента, чтобы кэшироваться, и gpg
просто использование gpg-agent
кэшировать пароль.
Можно взаимодействовать с gpg-agent
использование gpg-connect-agent
утилита. В примере, который следует, я передаю команды по одному через STDIN.
$ CACHEID="ThisIsTheTrickyPart"
$ ERRSTR="Error+string+goes+here"
$ PMTSTR="Prompt"
$ DESSTR="Description+string+goes+here"
$ echo "GET_PASSPHRASE --data $CACHEID $ERRSTR $PMTSTR $DESSTR" | gpg-connect-agent
D MyPassPhrase
OK
После вызова gpg-connect-agent
и передача в этой команде, pinentry
команда, настроенная в моей системе, использует ошибку, подсказку и строки описания для запроса пароль. В этом случае я ввел "MyPassPhrase", который является тем, что возвращается в структурированном выводе (см. изображение ниже). Если я отправляю GET_PASSPHRASE
кому: gpg-agent
снова с тем же $CACHEID
, это возвращает кэшируемый пароль вместо использования pinentry
.
GET_PASSPHRASE
также принимает a --no-ask
опция, которая возвратит ошибку на неудачном обращении в кэш. Здесь я использую "NotCachedID" в качестве идентификатора кэша и использую фиктивные строки для обязательных аргументов это gpg-agent
не будет использовать.
$ echo "GET_PASSPHRASE --no-ask NotCachedID Err Pmt Des" | gpg-connect-agent
ERR 67108922 No data <GPG Agent>
В принципе, затем, Вы могли попросить у агента каждого возможно кэшируемого пароля в свою очередь и проверить на OK
или ERR
в выводе. Вопрос затем становится, как я генерирую идентификатор кэша? Поскольку мы видим в примере выше, gpg-agent
либерально в том, что это принимает как идентификатор кэша. Это оказывается этим gpg
вычисляет цифровой отпечаток на открытом ключе и использует кодированное шестнадцатеричными числами строковое представление в качестве идентификатора кэша, но проблема состоит в том, что этот цифровой отпечаток не является тем же как цифровым отпечатком, через который можно учиться gpg --fingerprint --list-secret-keys
. Этот обзор называют keygrip (потому что он вычисляется по необработанному ключевому материалу только, тогда как цифровой отпечаток является calculcated по ключевому материалу и метке времени создания). Если Вы действительно хотите продолжить вниз этот путь, необходимо будет узнать, как генерировать корректный цифровой отпечаток для каждого из ключей, которые Вы хотите проверить (это будет легким использованием следующего поколения GnuPG, 2.1, с опцией --with-keygrip
).
Предупреждение: вывод от GET_PASSPHRASE
на самом деле содержит пароль в ясном. Даже если Вы кончаете --data
опция, пароль явно видим как кодированная шестнадцатеричными числами строка. Это - вероятно, Очень Плохая Идея (TM) для слоняний без дела с этим, если Вы не знаете то, что Вы делаете и принимаете соответствующие меры предосторожности.
Попробуйте следующее:
$ spam="foo bar"
$ touch "$spam"
$ ls -l
-rw-rw-r-- 1 user user 0 Mar 29 05:14 foo bar
-121--251601- Попробуйте:
IFS=$(echo -en "\n\b")
touch "$yourfile"
-121-251599- http://lists.gnupg.org/pipermail/gnupg-users/2010-January/037876.html
cacheid является полным отпечатком ключа.
gpg --fingerprint user@foo.bar
Чтобы получить cacheid, вам нужно дважды упомянуть - fingerprint
, например:
$ gpg --fingerprint --fingerprint ftpadmin@kernel.org
pub 1024D/517D0F0E 2000-10-10
Key fingerprint = C75D C40A 11D7 AF88 9981 ED5B C86B A06A 517D 0F0E
uid Linux Kernel Archives Verification Key <ftpadmin@kernel.org>
sub 4096g/E50A8F2A 2000-10-10
Key fingerprint = E851 4C25 10C6 0291 0D47 A008 7C8B 4360 E50A 8F2A
cacheid в этом случае будет E8514C2510C602910D47A0087C8B4360E50A8F2A
.
На более поздних версиях gnupg (проверено на 2.1.18) используйте:
gpg --fingerprint --with-keygrip
для получения keygrip, затем
echo "KEYINFO --no-ask
чтобы увидеть, кэширован он или нет.
В более поздних версиях GnuPG (, протестированных с 2.2.9 ), также можно вывести список клавиатур, которые в настоящее время кэшируются агентом, с помощью команды keyinfo --list
с gpg-connect-agent
.
$ gpg-connect-agent 'keyinfo --list' /bye
S KEYINFO 866C3DE249CF81E31A3691845DBADE2809487FF5 D - - 1 P - - -
S KEYINFO 04278155E72CAE8FF1548FE161F1B8F7673824F4 D - - - P - - -
OK
1
в седьмом столбце указывает на то, что клавиша кэшируется. Связь между клавиатурой и клавишей, которую она представляет, может быть получена с помощью gpg --list-secret-keys --with-keygrip
.
Источник:https://demu.red/blog/2016/06/how-to-check-if-your-gpg-key-is-in-cache/
В окнах (с помощью gpg4win )вы можете перечислить ключи с помощью:
gpg-connect-agent "KEYINFO --ssh-list --ssh-fpr" /bye
Если вам нужны отпечатки пальцев SHA1, используйте:
gpg-connect-agent "KEYINFO --ssh-list --ssh-fpr=sha1" /bye
Я не знаю, как перечислить комментарии ключей, но их можно увидеть в сохраненных ключах в%APPDATA%\gnupg\private-keys-v1.d\
gpg-agent
, это? – Hauke Laging 07.02.2014, 00:17gpg-agent
вызывает любую разновидностьpinentry
программа это настроено для использования. Посмотрите, например, Как вынудить GPG использовать консольный режим pinentry.... – neirbowj 08.02.2014, 20:18gpg-2.1.11
скомпилированный из источника на Ubuntu 14.04, я не могу выяснить чтоgpg-agent
идентификатор кэша: Я попробовал и keygrips (основной ключ и подраздел) и ключевой цифровой отпечаток, как показаноgpg --fingerprint --with-keygrip <user>
. Ни один из них работы, иgpg-connect-agent
всегда отчетыERR 67108922 No data <GPG Agent>
. Я проверил агент дважды, все еще имеет пароль путем успешного выполненияGPG_TTY= gpg --decrypt <file>
после испытания различных идентификаторов кэша. (В случае, если это неясно путем сбрасыванияGPG_TTY
, дешифрование успешно выполняется, только если пароль уже кэшируетсяgpg-agent
.) – Matei David 04.05.2016, 19:22