tmux에 pinentry가 표시되지 않습니다.

tmux에 pinentry가 표시되지 않습니다.

Yubikey Neo gpg(실제로는 백그라운드 pass에서 )를 사용하는 데 gpg문제가 있습니다 . tmux파일 암호 해독을 사용하거나 무언가에 서명하려고 하면 gpg다음과 같은 메시지가 나타납니다.

$ gpg -d test.gpg            
gpg: sending command `SCD PKDECRYPT' to agent failed: ec=5.99
gpg: public key decryption failed: general error
gpg: decryption failed: secret key not available

tmux이것은 내부적으로만 작동합니다. 일반 세션에서 동일한 명령을 직접 실행 하려고 하면 작동합니다.zshgnome-terminal

gpg -d test.gpg 
helloworld

pinentryYubikey의 잠금을 해제하고 파일 암호 해독을 계속하려면 PIN을 입력하라는 팝업이 표시됩니다.

나는 문제를 pinentry빌드할 수 없는 것으로 좁혔다고 생각합니다. 로그 수준을 설정하면 gpg-agent다음과 같은 결과가 나타납니다.

gpg-agent[906]: DBG: chan_6 <- INQUIRE NEEDPIN ||Please enter the PIN
gpg-agent[906]: starting a new PIN Entry
gpg-agent[906]: DBG: chan_7 <- OK Pleased to meet you, process 906
gpg-agent[906]: DBG: connection to PIN entry established
... options removed ...
gpg-agent[906]: DBG: chan_7 -> GETINFO pid
gpg-agent[906]: DBG: chan_7 <- D 13381
gpg-agent[906]: DBG: chan_7 <- OK
gpg-agent[906]: DBG: chan_7 -> SETKEYINFO --clear
gpg-agent[906]: DBG: chan_7 <- OK
gpg-agent[906]: DBG: chan_7 -> SETDESC Please enter the PIN
gpg-agent[906]: DBG: chan_7 <- OK
gpg-agent[906]: DBG: chan_7 -> SETPROMPT PIN
gpg-agent[906]: DBG: chan_7 <- OK
gpg-agent[906]: DBG: chan_7 -> [[Confidential data not shown]]
gpg-agent[906]: DBG: chan_7 <- [[Confidential data not shown]]
gpg-agent[906]: DBG: error calling pinentry: Operation cancelled <Pinentry>
gpg-agent[906]: DBG: chan_7 -> BYE
gpg-agent[906]: DBG: chan_6 -> CAN
gpg-agent[906]: DBG: chan_6 <- ERR 100663573 IPC call has been cancelled <SCD>
gpg-agent[906]: DBG: chan_5 -> ERR 83886179 Operation cancelled <Pinentry>

분명히 처리되지 않은 일부 명령문을 OPTION제외하고는 수상한 내용이 보이지 않지만 pinentry에서 호출하면 동일한 결과를 얻습니다 gnome-terminal.

변수를 설정해 $DISPLAY도 도움이 되지 않습니다. 오류는 동일합니다.

내가 뭐 놓친 거 없니? 설정해야 할 다른 변수가 있나요? pinentry-ncurses그래픽 인터페이스를 열 수 없다면 왜 이런 일이 발생하지 않습니까?

답변1

문제는 (어떤 이유에서인지) gpgdbus를 사용하려고 하는데 tmux환경 변수가 DBUS_SESSION_BUS_ADDRESS오래되었다는 것입니다.

이 문제는 다음으로 해결할 수 있습니다.

set-option -g update-environment 'DBUS_SESSION_BUS_ADDRESS'

존재하다 .tmux.conf.

관련 정보