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
이것은 내부적으로만 작동합니다. 일반 세션에서 동일한 명령을 직접 실행 하려고 하면 작동합니다.zsh
gnome-terminal
gpg -d test.gpg
helloworld
pinentry
Yubikey의 잠금을 해제하고 파일 암호 해독을 계속하려면 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
문제는 (어떤 이유에서인지) gpg
dbus를 사용하려고 하는데 tmux
환경 변수가 DBUS_SESSION_BUS_ADDRESS
오래되었다는 것입니다.
이 문제는 다음으로 해결할 수 있습니다.
set-option -g update-environment 'DBUS_SESSION_BUS_ADDRESS'
존재하다 .tmux.conf
.