Pingri gpg aracısı ve SSH ile başarısız oluyor


12

Fedora 22 çalıştırıyorum. Yubikey Neo'da bulunan PGP kimlik doğrulama alt anahtarımı kullanarak SSH bağlantılarımın kimlik doğrulaması için GnuPG'yi kurmaya çalışıyorum.

Gpg-agent'ı aşağıdaki gibi başlatan bir systemd birimim var:

/usr/bin/gpg-agent --homedir=%h/.gnupg --daemon --use-standard-socket

Ve yapılandırmada SSH desteğini etkinleştirdim:

enable-ssh-support
pinentry-program /usr/bin/pinentry-gtk

Kurulumun diğer parçalar ekleyerek içerir keygrip benim anahtarın ~/.gnupg/sshcontrol, dosyanın benim ekleyerek ortak anahtarı uzak ana ve ilan ortam değişkenleri .

Küresel olarak, kurulumun işe yaradığı çeşitli günlüklere bakarken, SSH'nin anahtarı bulduğunu ancak aslında imzalamadığını görebiliyorum. Eğer günlüklere bakarsanız gpg-agent, pinentryprogramı başlatamadığını ve bu nedenle PIN kodunu istemediğini görebiliyorum:

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>

Burada gördüğümüz şey, SSH ile birlikte kullanıldığında, pinentry çağrılırken bazı ioctl çağrılarının başarısız olmasıdır. Ancak aşağıdakileri çalıştırırsam:

$ echo "Test" | gpg2 -s

PIN penceresi açılır ve her şey yolunda gider.

Bu kurulum ve SSH ile neler olup bittiğini anlamama yardımcı olabilir misiniz?


Ben "ajan ile sorunu: Uygunsuz ioctl cihaz için" benzer başlamıştı borusuna çıktısını çalışırken hata tariçin gpg2Mac OS X ve üzerinde Vigo'nun cevap benim için çözüldü.
Kenny Evitt

Yanıtlar:


17

Bu benim için çalıştı:

export GPG_TTY=`tty`

.bashrcgpg'yi kullanmadan önce bunu ekleyin veya tekmeleyin.


10

Cevabı GPG Web sitesinde bulduk . Aracı, Pinentry penceresini hangi ekranda görüntüleyeceğini bulamadı. Sadece dosyama aşağıdakileri koymak zorunda kaldım .*shrc:

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

Teşekkür ederim! Bu, sorunun tam olarak belirlenmesine yardımcı oldu (pinentry penceresi görünmüyor). Ancak, yukarıdaki komut benim için çalışmıyor. Ben yaparsam gpg-connect-agentçıktılar can't connect to the agent: IPC connect call failed. gpg-agentdüzgün çalışıyor ve GPG_AGENT_INFOenv değişkenleri düzgün ayarlanmış.

İlginçtir yukarıdaki sorunu düzeltmek export GPG_AGENT_INFOiçin ekledi . Bunu daha önce eklemedim çünkü kabuğum iyiydi .. ama yine de gerekli olduğu ortaya çıkıyor. .bashrcgpg-connect-agent IPC connect call failedecho $GPG_AGENT_INFO

1
Kaç kişinin bu komutu kopyaladığını bilmek ve neden kullanıcı klasörlerinde "1" adlı bir dosyaya sahip olduklarını merak ediyorum ..
Kenan Sulayman

1
@KenanSulayman iyi yakaladım. Komutu düzelttim.
Spack

2
"Ajan Pinentry penceresini görüntülemek için hangi ekranda bulamadı ..." - Lol ... 1980 dönemi geciktirilmiş yazılım. Çok az insanın GPG kullandığına şaşmamalı. Belki de GPG üzerinde çalıştığımı seçmeli ve işe yaramaz hata mesajları vermeyi bırakmalıdır.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.