Gentoo Linux GPG verschlüsselt eine Datei, die über den Parameter übergeben wurde, ordnungsgemäß, gibt jedoch beim Lesen von der Standardeingabe "Unangemessenes ioctl für Gerät" aus

23

Ich starte Gentoo Hardened mit Kernel 4.1.7-hardened-r1 und versuche, eine Datei mit GPG aus einer Shell-Sitzung zu verschlüsseln, die über SSH geöffnet und die DISPLAYVariable deaktiviert wurde, um PIN-Curses für die Passwortabfrage zu verwenden. Mit gpg -o file.gpg --symmetric filekann ich ganz gut verschlüsseln. Bei Verwendung pv file | gpg -o file.gpg --symmetricerhalte ich folgende Fehlermeldung:

gpg-agent[30745]: command get_passphrase failed: Inappropriate ioctl for device
RAKK
quelle

Antworten:

41

Sie sollten Ihre GPG_TTY-Variable so einstellen, dass sie funktioniert, wie in diesem Dokument :

GPG_TTY=$(tty)
export GPG_TTY

Diese beiden Zeilen sollten sich in Ihrer .bashrc(vorausgesetzt Bash) befinden, sodass sie jedes Mal ausgeführt werden, wenn Sie eine neue Terminalsitzung öffnen.

Es gibt jedoch eine andere Lösung: In bash können Sie Ihre pvDatei mithilfe der Prozessersetzung ausführen und so tun, als ob sie eine Datei wäre:

gpg -o file.gpg --symmetric <(pv file)

Daher ist es möglicherweise keine gute Idee, Dinge an Programme weiterzuleiten, die zusätzliche Eingaben erwarten. Es kann anders als erwartet funktionieren.

TNW
quelle
Gibt es eine Möglichkeit, dieses Verhalten zu ändern oder zu beheben? Im Moment habe ich genau den gleichen Read-from-Stdin-Befehl unter Debian ausprobiert und GPG hat nach meinem Passwort gefragt.
RAKK
@RAKK Könnten Sie die resultierende Datei entschlüsseln?
TNW
Ja, ohne Probleme mit Debian. Erstellen Sie eine kleine Datei mit zufälligen Daten dsfargeg, verschlüsseln Sie sie mit pv dsfargeg | gpg -o dsfargeg.gpg --symmetric, geben Sie bei Aufforderung ein Kennwort ein, entschlüsseln Sie die Ausgabe mit gpg -o dsfargeg.gpg.dec --decrypt dsfargeg.gpg, geben Sie Ihr Kennwort ein und vergleichen Sie die ursprüngliche und die entschlüsselte Datei mit sha256sum dsfargeg dsfargeg.gpg.dec. Beide Hashes sind gleich.
RAKK
@RAKK Du hast recht. Es scheint, dass gpg /dev/ttyauf Debian geöffnet wird . Dies war jedoch in meinem Fall die Version 1.4; gpg wurde seitdem ein wenig überarbeitet. Dieser Ansatz wurde möglicherweise aus irgendeinem Grund eingestellt - Sie möchten vielleicht selbst mehr herausfinden (oder dies kann ein bestimmter Debian-Patch sein). Daher ist es wahrscheinlich besser, wenn Sie sich nicht darauf verlassen. Ich werde in Spuren herumgraben, um zu überprüfen, was genau in neuerem gpg passiert (ich habe 2.1).
TNW
Komischerweise habe ich eine Lösung gefunden! Das Setzen der GPG_TTY-Variablen erledigt das für mich. Ich werde die Antwort entsprechend aktualisieren.
TNW