Mac의 gpg2: GUI 프롬프트를 표시하는 대신 터미널에 암호를 입력하는 방법은 무엇입니까?

Mac의 gpg2: GUI 프롬프트를 표시하는 대신 터미널에 암호를 입력하는 방법은 무엇입니까?

저는 Mountain Lion을 사용하고 있는데 gpg를 사용하여 파일을 암호화하면 성가신 GUI에서 암호를 입력하라는 메시지를 표시합니다. 외부 GUI가 아닌 터미널에서 암호를 묻는 메시지를 표시하고 싶습니다. 예를 들어 원격으로 그렇게 할 수도 있습니다.

Mac용 gpg가 터미널에서 암호를 요구하고 GUI 프롬프트에서는 암호를 요구하지 않게 하는 방법이 있습니까?


업데이트:gpg2에서는 이것이 매우 어려운 것 같아서 gpg1로 다운그레이드했습니다. gpg2(MacGPG2)로 모든 것을 시도했지만 아무것도 작동하지 않았습니다. 짜증나! gpg1을 사용하면 잘 작동합니다!

답변1

다음은 MacGPG2가 아닌 macport와 함께 gnupg2를 사용한다고 가정하지만 수정 사항이 사용 사례에 적용될 가능성이 높습니다.

macports에서 'pinentry' 패키지를 설치하십시오:

port -v install pinentry

~/.gnupg/gpg-agent.conf를 다음과 같이 편집하세요.

pinentry-program /opt/local/bin/pinentry-curses

기존 'pinentry-program' 항목을 제거하거나 주석 처리합니다. 터미널을 다시 로드하거나 다음을 사용하세요.

echo RELOADAGENT | gpg-connect-agent

완료. 이제 터미널 내부에 pinentry/passphrase가 있어야 합니다(저주 대화 상자). inline-ttl pinentry의 이전 gpg v1.x 동작을 원할 경우 macports pinentry 패키지와 함께 사용자 정의 './configure' 명령을 사용할 수 있습니다.

이전에 Mac용 MacGPG2/GPG 도구를 설치한 경우 pinentry 대화 상자가 작동하기 전에(또는 재부팅하기) 'shutdown-gpg-agent' 프로세스를 종료해야 할 수도 있습니다.

user$ ps ax |grep shutdown-gpg-agent
 1854   ??  S      0:00.01 /bin/bash /usr/local/MacGPG2/libexec/shutdown-gpg-agent

user$ kill -KILL 1854

답변2

ssh환경 변수를 확인하여 연결을 통해 들어오는지 여부를 확인할 수 있습니다 SSH_CONNECTION.

export GPG_TTY=$(tty)
if [[ -n "$SSH_CONNECTION" ]] ;then
    export PINENTRY_USER_DATA="USE_CURSES=1"
fi

나는 다음 검사를 사용하여 내가 넘치고 있는지 확인하기 위해 검사를 사용합니다 ssh.tmux

export GPG_TTY=$(tty)
if [[ -n "$SSH_CONNECTION" || -n "$TMUX" ]] ;then
    export PINENTRY_USER_DATA="USE_CURSES=1"
fi

원천

답변3

세 단어: 직접 컴파일하세요. 예, 그렇게 할 수 있습니다! 하지만 먼저 gpg-agent.conf 파일을 제거하십시오!

답변4

방금 GnuPG(버전 2.2.9)와 Mac OS High Sierra에 대한 모든 종속성 컴파일을 마쳤습니다. 꽤 흥미로웠습니다. libgcrypt 테스트로 작은 문제를 해결한 후(Homebrew의 해당 레시피를 약간 사용하여) 기본적으로 모든 것이 기본적으로 작동했습니다.

내 개인 키를 가져오려고 시도하는 동안 시스템에 pinentry 프로그램이 부족했기 때문에 가져올 수 없었습니다. 빠른 검색을 통해 이 페이지에 도달하게 되었지만 별로 도움이 되지 않았기 때문에 단순히 핀트리를 직접 컴파일하기로 결정했습니다.

나는 Linux 시스템에서 GnuPG를 사용한 경험을 통해 짜증나고 방해가 되는 대화 상자 없이 명령줄의 일반 프롬프트에 암호를 입력하고 싶다는 것을 이미 알고 있었습니다. 이것이 제가 여기서 그 과정을 공유하는 이유입니다. 간단하지만 비슷한 문제가 있는 사람에게 도움이 될 수 있습니다.

GnuPG에서 pinentry의 소스 코드를 가져오는 것부터 시작하세요. 확인해보세요웹사이트. 작성 당시 소스 다운로드 링크는 다음과 같습니다.https://gnupg.org/ftp/gcrypt/pinentry/pinentry-1.1.0.tar.bz2. 또한 다운로드서명gpg 자체를 사용하여 진위 여부를 확인하십시오.

확인을 건너뛰지 마세요,이건 중요하다! 이 프로그램은 귀하의 모든 GPG 비밀번호와 개인 키에 접근할 수 있습니다. 그것이 주장하는 바인지 확인하는 것이 좋습니다! 문제가 있는 경우 GnuPG 관리자로부터 키를 가져왔는지 확인하세요.여기):

$ gpg --verify pinentry-1.1.0.tar.bz2.sig pinentry-1.1.0.tar.bz2

이제 실제 소스 파일로 작업하고 있다고 확신했으므로 cd해당 디렉터리에 소스 코드를 추출합니다.

$ tar xvf pinentry-1.1.0.tar.bz2
$ cd pinentry-1.1.0

컴파일은 매우 간단합니다.

$ ./configure --enable-pinentry-tty
$ make
$ sudo make install

configure일부 누락된 종속성에 대해 불평할 수도 있습니다 . 그런 경우에는 간단히 오류를 읽고 GnuPG 웹페이지에서 종속성을 다운로드하세요(항상 다운로드의 무결성을 확인하세요!).

위 명령의 중요한 부분은 플래그입니다 --enable-pinentry-tty. Pinentry TTY는 명령줄의 매우 평범하고 지루한 프롬프트에 비밀번호를 입력하는 가장 간단한 방법입니다. 내가 원하던 바로 그거야! 내가 착각하지 않는다면 curses어쨌든 버전이 만들어질 것입니다. CLI 옵션이지만 다른 모든 옵션만큼 파괴적이라고 생각합니다.

설치가 완료되면 /usr/local/bin. 전화가 있는지 확인하세요 pinentry-tty(그렇지 않으면 문제가 발생한 것입니다...).

새 바이너리를 gpg 비밀번호를 입력하는 기본 방법으로 만들려면 다음 행을 에 추가하세요 ~/.gnupg/gpg-agent.conf(아직 존재하지 않는 경우 파일과 디렉터리를 만듭니다).

pinentry-program /usr/local/bin/pinentry-tty

이전 구성으로 실행 중인 gpg-agent가 여전히 있을 가능성이 높기 때문에 즉시 시도하면 아마도 작동하지 않을 것입니다. 계속해서 모든 gpg-agent를 종료하고 새 에이전트를 생성하십시오.

$ sudo killall gpg-agent
$ gpg-agent --daemon

그게 다야! 옛날 스타일의 TTY 핀트리를 즐겨보세요 :)

관련 정보