ssh-agent + ssh-add와 같이 gpg-agent를 어떻게 사용합니까?


15

ssh-agent사용하기 매우 쉽습니다. 시작하고 키를 사용하여 추가하십시오 ssh-add keyfile. 프로세스를 종료 ssh-agent하면 모든 파일이 사라집니다.

같은 동작을 gpg-agent어떻게 얻을 수 있습니까? 내가 찾은 가장 가까운 프로그램은 gpg-preset-passphrase입니다. 그러나의 매뉴얼 페이지를gpg-agent 보면 개인 키를 저장하기위한 디렉토리가 생성 된 것 같습니다.

내가 틀릴 수 있으므로 gpg-agent파일 / 디렉토리가 생성되지 않는 방식으로 설정 하는 방법이 궁금합니다 . 가능하지 않다면, + gpg-agent와 같은 작업 을하는 다른 제안 도 환영받을 것입니다. Seahorse와 같은 GUI 솔루션을 찾고 있지 않습니다.ssh-agentssh-add


체크 아웃 gpg-connect-agent했습니까?
Smithamax

@Smithamax nope, 그러나와 동일한 기능을 사용하는 것 같습니다 gpg-preset-passphrase. 내가 실행하고 gpg-connect-agent, 쉘을 가져 와서 실행 한 setkey IDOFMYPRIVATEKEYHEREpreset_passphraseid로 인해 "ERR 67108924 지원되지 않는 <GPG-agent>-no --allow-preset-passphrase"가 발생했습니다
Lekensteyn

답변:


13

나는 이것을 다시 살펴보고 그것이 어떻게 작동하는지 알아 냈습니다. 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-supportgpg-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
    

내 컴퓨터가 이상 이상과 암호를 묻는 유지
밝은 돈

@donbright 하나만 gpg-agent활성화되어 있습니까? (예를 들어 프로세스 목록을 확인하십시오 ps u -C gpg-agent). 캐시 시간 초과가 적절하게 설정되어 있습니까? 서명에 사용하는 경우 ((SSH) 인증과 반대) ignore-cache-for-signing옵션이 설정되지 않습니까?
Lekensteyn

감사. 내 문제는 내가 gpg 2 대신 gpg 1.4를 사용하고 있다는 것으로 밝혀졌습니다. 우분투에서는 설치하려는 패키지를 혼란스럽게 할 수 있습니다.
밝게
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.