Я использую Fedora 22. Я пытаюсь настроить GnuPG, чтобы мои SSH-соединения аутентифицировались с помощью моего подраздела аутентификации PGP, который находится на моем Yubikey Neo.
У меня есть системный модуль, запускающий gpg-agent следующим образом:
/usr/bin/gpg-agent --homedir=%h/.gnupg --daemon --use-standard-socket
И я включил поддержку SSH в конфигурации:
enable-ssh-support
pinentry-program /usr/bin/pinentry-gtk
Другие части настройки включают в себя добавление ключевой ручки моего ключа в ~/.gnupg/sshcontrol
файл, добавление моего открытого ключа на удаленный хост и объявление переменных среды .
В целом, просматривая различные журналы, кажется, что установка работает, я вижу, что SSH находит ключ, но на самом деле не может подписать его. Если я посмотрю журналы от gpg-agent
, то увижу, что программа не запускается pinentry
и, следовательно, не запрашивает 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>
Здесь мы видим, что при использовании в сочетании с SSH некоторые вызовы ioctl не выполняются при вызове pinentry. Однако, если я запускаю следующее:
$ echo "Test" | gpg2 -s
Окно PIN-кода выскакивает, и все работает нормально.
Можете ли вы помочь мне понять, что происходит с этой настройкой и SSH?
tar
togpg2
на Mac OS X, и ответ vigo решил эту проблему для меня.