세션 당 한 번만 암호를 입력하도록 gpg를 구성하는 방법


18

gpg암호를 한 번만 입력하는 방식 으로 구성 할 수 있으며 전체 세션에서 작동합니다 ( Ubuntu/XFce).

어떻게 gpg작동 하는지 잘 모르겠습니다 . 기본 기능은 암호 를 gpg요구 gpg-agent하고 에이전트가 암호 입력을 요청하기 위해 핀 입력을 실행 하는 것 같습니다 .

세션 당 한 번만 pinentry-curses를 사용하고 싶습니다. 그래서 암호 문구를 붙여넣고 ( hex문장의 문자열이 있습니다-사용합니다 echo -n <SENTENCE> | str-hex) 암호 문구를 넣지 않고 Claws Mail에서 전자 메일에 서명 할 수 있습니다. 우편).

답변:


16

이 페이지에 설명 된 기술을 사용할 수 있습니다.

http://fvue.nl/wiki/Debian_4.0:_Installing_gpg-agent

요점은 다음과 같습니다.

  1. gpg-agent 및 pinentry 프로그램을 설치하십시오 :

    sudo apt-get install gnupg-agent pinentry-curses
    
  2. 에 아래 줄을 추가하십시오 ~/.profile. POSIX 확인 쉘에는이 파일이 포함되어야합니다.

    # Invoke GnuPG-Agent the first time we login.
    # Does `~/.gpg-agent-info' exist and points to gpg-agent process accepting signals?
    if test -f $HOME/.gpg-agent-info && \
        kill -0 `cut -d: -f 2 $HOME/.gpg-agent-info` 2>/dev/null; then
        GPG_AGENT_INFO=`cat $HOME/.gpg-agent-info | cut -c 16-`
    else
        # No, gpg-agent not available; start gpg-agent
        eval `gpg-agent --daemon --no-grab --write-env-file $HOME/.gpg-agent-info`
    fi
    export GPG_TTY=`tty`
    export GPG_AGENT_INFO
    

    이 작은 스크립트는 로그인 할 때 활성화됩니다. 에이전트가 실행 중이 아니면 시작됩니다. 에이전트가 시작되면 연결하기 위해 환경 변수를 설정하는 방법이 표시됩니다. 스크립트는이 값을에 저장 ~/.gpg-agent-info하므로 다른 로그인 세션을 시작할 때 스크립트가 변수를 올바르게 설정하여 에이전트를 사용할 수 있습니다.

부팅 할 때마다 암호를 한 번만 입력하면됩니다. 에이전트는 키를 메모리에 저장하므로 암호를 다시 입력 할 필요가 없습니다.


이 스크립트를 행복하게 사용했지만 무작위로 실패합니다. 결국, 나는 이것에 대한 조건을 수정했고 GPG_PROCESS=`cut -d: -f 2 $HOME/.gpg-agent-info` if test -f $HOME/.gpg-agent-info && \ kill -0 ${GPG_PROCESS} 2>/dev/null && \ [[ ${GPG_PROCESS} == `pgrep -x -u "${USER}" gpg-agent` ]] ; then잘 작동했습니다. 문제는 위의 스크립트가 프로세스 .gpg-agent-info가 살아 있는지 확인 하고로 신호를 수락 한다는 것 입니다 kill -0. 프로세스가 있지만 그렇지 않은 gpg-agent경우 잘못된 동작이 발생합니다. 첨부 된 코드는 올바른 프로세스가 있는지 확인합니다.
wyer33
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.