최근 개발 작업을 위해 가상 머신에 Ubuntu를 설정했는데 git이 내 커밋에 서명할 수 없다는 사실을 발견했습니다. 추가 조사 결과, 설정이 정확했음에도 Inappropriate ioctl for device
불구하고 gpg-agent가 pinentry-curses를 통해 내 비밀번호를 요청할 수 없어 오류가 발생했다는 사실을 발견했습니다 .GPG_TTY
$ echo 'this is a test' | gpg --status-fd=2 -bsau <<my-key-short>>
[GNUPG:] KEY_CONSIDERED <<my-key-long>> 2
[GNUPG:] BEGIN_SIGNING H8
[GNUPG:] PINENTRY_LAUNCHED 1207
gpg: signing failed: Inappropriate ioctl for device
[GNUPG:] FAILURE sign 83918950
gpg: signing failed: Inappropriate ioctl for device
$ echo $GPG_TTY
/dev/pts/0
그러나 gpg-agent를 종료하고 수동으로 시작하면(에이전트를 자동으로 시작하기 위해 ps에서 보고한 것과 정확히 동일한 매개변수 사용) 문제 없이 비밀번호와 서명을 묻는 메시지가 표시될 수 있습니다.
$ ps x
PID TTY STAT TIME COMMAND
922 ? S 0:00 sshd: five35@pts/0
923 pts/0 Ss 0:00 -bash
1205 ? Ss 0:00 gpg-agent --homedir /home/five35/.gnupg --use-standard-socket --daemon
1224 pts/0 R+ 0:00 ps x
$ gpgconf --kill gpg-agent
$ gpg-agent --homedir /home/five35/.gnupg --use-standard-socket --daemon
gpg-agent[1276]: WARNING: "--use-standard-socket" is an obsolete option - it has no effect
gpg-agent[1277]: gpg-agent (GnuPG) 2.1.15 started
$ echo 'this is a test' | gpg --status-fd=2 -bsau <<my-key-short>>
[GNUPG:] KEY_CONSIDERED <<my-key-long>> 2
[GNUPG:] BEGIN_SIGNING H8
[GNUPG:] PINENTRY_LAUNCHED 1295
[GNUPG:] SIG_CREATED D 1 8 00 1503763837 <<my-key-long>>
-----BEGIN PGP SIGNATURE-----
iQIcBAABCAAGBQJZoZ19AAoJEKT/kfDdu6RyXJYP/RBNUVXFkWahcYcaGs4LkC5Y
G9bcMnNgGdVZt5XXq28jjc3KRNkwC1taHK+TcNutGoK7vbnnB8dmZ2/M5mHkvzCt
Cdm7YBp0QevUIRNoJis402/nmBXG3wEwne97B0kC32aY6i2pPMl+x0ZVbrZ15mXk
mhvk+Yd126x/HQ2B5buFN1rnh1oXdm6vo6EZXjTI6uCYlEeIMJUqdWhys7lf2TNr
3wCyrVvPx44RY92vtKSdJW0eZNhzMqdopjyaO/TPMPZxQiH7t0/rJk98eLyEAkBT
kcW6iDTwZWWgA3I4X1Q0JIKnc33jRXnOuLWcPEOSYKczssQx6xXNS43vskaaz2Rz
/U6NsaF0BuTQY9LcT1nKRwyoB1SXPgBss0j/E0MvZEHYTQfRPuAffJgZvQyIEjGf
6DPicQ45hltPaiFekXtTBd47ilyvyWCYO6qnCjDpTFxLXw3y4PseA79GrkQ2YRiS
Tzb6faW+/pgFlcXpMpCZATGde0o/KQZdTSZ5TpvlAf4N8uBdppObxuhDnzS2BeR6
/pqmP+/cw+txb7peNrvbIjwQcNsAkp5M8lG0hPJEecHXkivEck7zsgC6ua+Fy/Ic
3LicU01YvzIGq2r703pZpFWcoayPEdn5BCtyRElwON/Vk98930QCOu65WqF4WOmJ
s1k429ihGjgTRqzOT6by
=uv8j
-----END PGP SIGNATURE-----
또한 여러 터미널(SSH 세션)을 열면 gpg-agent를 수동으로 시작한 터미널에서 항상 비밀번호를 묻는 메시지가 표시됩니다.
이 문제를 어떻게 해결할 수 있나요? 나는 export GPG_TTY=$(tty)
.bashrc(결과는 위에서 볼 수 있음)에 추가하고 , run 을 실행하고 echo "UPDATESTARTUPTTY" | gpg-connect-agent
, my 를 TERM
just 로 변경하고 xterm
, unset 으로 변경했습니다 DISPLAY
. 불행하게도 이들 중 어느 것도 효과가 없는 것 같습니다.
호스트 시스템:
- Windows 10 홈 에디션 64비트 1703 15063.540
- 퍼티 0.70 64비트
클라이언트 시스템:
- 우분투17.04
- GPG 2.1.15
- GPG-에이전트 2.1.15
- pinentry-저주 1.0.0