나는 이것을 다시 살펴보고 그것이 어떻게 작동하는지 알아 냈습니다. 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).
암호문은 항상 (메모리가 아닌 디스크에 캐시됩니다! git repo로 확인 됨 $HOME
) 명시 적으로 필요하지 않습니다 ssh-add
. 예를 들어 더미 데이터에 서명하면 캐시가 이미 트리거됩니다.
$ echo | gpg -s >/dev/null
(passphrase requested
$ echo | gpg -s >/dev/null
(signing proceeds without asking for passphrase)
gpg-agent의 캐시 설정을 영구적으로 변경하려면 ~ / .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-agent가 키를 암호화하기 위해 다른 키를 요청한 다음 개인 키를에 저장합니다 ~/.gnupg/private-keys.d/
. 아니, 나는 이중 ssh-agent / gpg-agent 접근법을 고수 할 것이다.
몇 가지 보너스 팁 :
max-cache-ttl-ssh
키를 추가 할 때 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
gpg-connect-agent
했습니까?