X 없이 gpg2 pinentry가 실패함

X 없이 gpg2 pinentry가 실패함

무엇이 작동하고 있나요?

내 gpg-agent pinentry는 X에서 잘 작동합니다. 나는 뛸 수 있습니다

echo "test" | gpg2 -ase --default-recipient-self | gpg2

내 비밀번호를 캐싱하고 나중에 실행하여 killall gpg-agent -1비밀번호를 새로 고치세요.

기본적으로 pinentry-gtk를 열고(외관상) 비밀번호를 묻는 메시지를 표시합니다.

작동하지 않는 것

그러나 X 서버 없이 동일한 명령을 실행하려고 하면 gpg2가 중단되는 것 같습니다(프롬프트나 아무것도 표시되지 않음). 이를 종료하면 pinentry계속 존재하지만 아무 소용이 없는 프로세스가 있음을 알 수 있습니다.

내가 무슨 일이 일어나길 기대하는지

gpg2나는 X 서버 없이 실행하면 다음과 같은 pinentry-curses 프롬프트가 표시되기를 바랐습니다 pass. 또한 표준 입력에서 비밀번호를 입력하라는 메시지를 표시한 이전 버전의 gpg가 기억나는 것 같은데 왜 그런 일이 발생하지 않는지 잘 모르겠습니다.

내가 시도한 것

다음 "수정 사항"을 시도했지만 그 중 어느 것도 위 명령이 올바르게 실행되지 않았습니다. 실제로 pinentry-curses를 강제로 적용하면 X 환경( pass여전히 작동함)에서도 위 명령이 실패하게 됩니다.

  • pinentry-program /usr/bin/pinentry-curses`gpg-agent.conf`에 설정

  • 다음과 같이 gpg-agent를 시작하십시오.gpg-agent --daemon --keep-tty --use-standard-socket --pinentry-program=/usr/bin/pinentry-curses

  • 환경 변수를 사용하십시오.export PINENTRY_USER_DATA="USE_CURSES=1”

배경 정보

거의 비어 있는 .gpg-agent 구성 파일이 있는데 캐시 시간 초과만 있습니다.

로그인할 때 gpg-agent를 직접 호출합니다 eval $(gpg-agent --daemon). 예를 들어 X로 부팅하지 않으므로 getty를 사용하여 로그인합니다.

답변1

아... 답은 첫 화면의 값에 있습니다 man gpg-agent. ~/.bashrc에 다음 줄을 추가해야 합니다.

GPG_TTY=$(tty)
export GPG_TTY

GPG_TTY의 잘못된 값은 pinentry-curses가 실행되는 이유를 설명하지만 필요한 위치는 설명하지 않습니다.

노트:콘솔 로그인과 X 서버 시작 사이에 출력이 변경 되므로 tty모든 ~/.bashrc에서 실행해야 합니다(내보낸 환경 변수의 대부분은 로그인 시에만 실행되도록 구성되어 있습니다).

답변2

X와 tty 사이를 자주 전환하는 경우 다음을 실행하고 싶을 수 있습니다.

gpg-connect-agent updatestartuptty /bye > /dev/null

현재 환경으로 설정

관련 정보