Невдача пінентури з gpg-агентом і SSH


12

Я запускаю Fedora 22. Я намагаюся налаштувати GnuPG, щоб мої SSH-з'єднання були аутентифіковані за допомогою мого підрозділу аутентифікації PGP, який знаходиться на моєму Yubikey Neo.

У мене системний блок запускає gpg-агент таким чином:

/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 виявляється невдалим під час виклику стипендії. Однак якщо я запускаю наступне:

$ echo "Test" | gpg2 -s

З'являється вікно PIN-коду, і все працює нормально.

Чи можете ви допомогти мені зрозуміти, що відбувається з цією установкою та SSH?


Я отримував подібні «проблеми з агентом: неприпустимим IOCTL для пристрою» помилки при спробі до труби виходу tarдо gpg2на Mac OS X і відповідь Vigo в вирішити це для мене.
Кенні Евітт

Відповіді:


17

Ну, для мене це спрацювало:

export GPG_TTY=`tty`

додайте це до свого .bashrcабо просто натисніть його, перш ніж використовувати gpg.


10

Відповідь я знайшов на самому веб-сайті GPG . Агенту не вдалося знайти, на якому екрані відображати вікно Pinentry. Мені просто довелося вписати у свій .*shrcфайл таке:

echo "UPDATESTARTUPTTY" | gpg-connect-agent > /dev/null 2>&1

Дякую! Це допомогло точно визначити проблему (не з'являлося вікно чіткості). Однак вищезазначена команда для мене не працює. Якщо я gpg-connect-agentце робити, виводить can't connect to the agent: IPC connect call failed. gpg-agentпрацює нормально, і GPG_AGENT_INFOоточення налаштоване належним чином.

Цікаво додати export GPG_AGENT_INFOдо .bashrcвиправленого вище питання с gpg-connect-agent IPC connect call failed. Я раніше цього не додавав, тому що echo $GPG_AGENT_INFOв моїй оболонці було добре .. але виявляється, це все-таки потрібно.

1
Я хотів би дізнатися, скільки людей скопіювали цю команду і поцікавились, чому у папці користувача у них файл з назвою "1" ..
Кенан Сулайман

1
@KenanSulayman хороший улов. Я виправив команду.
Спак

2
"Агент не зміг знайти, на якому екрані відображати вікно" Пінтеррі "..." - програмне забезпечення, що відстає від епохи Lol ... 1980 року. Недарма дуже мало людей використовують GPG. Можливо, GPG повинен вибрати той, над яким я працюю, і перестати надавати марні повідомлення про помилки.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.