Korzystam z Fedory 22. Próbuję skonfigurować GnuPG w taki sposób, aby moje połączenia SSH były uwierzytelniane przy użyciu mojego podklucza uwierzytelniania PGP, który znajduje się na moim Yubikey Neo.
Mam jednostkę systemową uruchamiającą agenta gpg w następujący sposób:
/usr/bin/gpg-agent --homedir=%h/.gnupg --daemon --use-standard-socket
I włączyłem obsługę SSH w konfiguracji:
enable-ssh-support
pinentry-program /usr/bin/pinentry-gtk
Inne elementy instalacji obejmują dodanie keygrip mojego klucza do ~/.gnupg/sshcontrol
pliku, dodając mój klucz publiczny na zdalnym komputerze i deklarowania zmiennych środowiskowych .
Patrząc globalnie na różne dzienniki, które instalator wydaje się działać, widzę, że SSH znajduje klucz, ale tak naprawdę nie podpisuje się nim. Jeśli spojrzę na dzienniki z gpg-agent
, widzę, że nie można uruchomić pinentry
programu, a zatem nie żąda kodu PIN:
2015-07-22 23:23:28 gpg-agent[6758] DBG: error calling pinentry: Ioctl() inappropriate for a device <Pinentry>
2015-07-22 23:23:28 gpg-agent[6758] DBG: chan_8 -> BYE
2015-07-22 23:23:28 gpg-agent[6758] DBG: chan_7 -> CAN
2015-07-22 23:23:28 gpg-agent[6758] DBG: chan_7 <- ERR 100663573 The IPC call was canceled <SCD>
2015-07-22 23:23:28 gpg-agent[6758] smartcard signing failed: Ioctl() inappropriate for a device
2015-07-22 23:23:28 gpg-agent[6758] ssh sign request failed: Ioctl() inappropriate for a device <Pinentry>
Widzimy tutaj, że w połączeniu z SSH niektóre połączenia ioctl zawodzą podczas wywoływania pinentry. Jednak jeśli uruchomię następujące:
$ echo "Test" | gpg2 -s
Okno PIN wyskakuje i wszystko działa dobrze.
Czy możesz mi pomóc zrozumieć, co się dzieje z tą konfiguracją i SSH?
tar
dogpg2
systemu Mac OS X i odpowiedź vigo rozwiązała to dla mnie.Odpowiedzi:
Cóż, to zadziałało dla mnie:
dodaj to do swojego
.bashrc
lub po prostu wykop go przed użyciem gpg.źródło
Odpowiedź znalazłem na samej stronie GPG . Agent nie mógł znaleźć na ekranie, na którym ma zostać wyświetlone okno Pinentry. Po prostu musiałem umieścić w swoim
.*shrc
pliku:źródło
gpg-connect-agent
, wyjdziecan't connect to the agent: IPC connect call failed
.gpg-agent
działa poprawnie, aGPG_AGENT_INFO
zmienne env są poprawnie skonfigurowane.export GPG_AGENT_INFO
do.bashrc
rozwiązania powyższego problemu zgpg-connect-agent IPC connect call failed
. Nie dodałem tego wcześniej, ponieważecho $GPG_AGENT_INFO
w mojej powłoce było w porządku .. ale okazuje się, że nadal jest wymagane.