it-swarm.com.de

Deaktivieren Sie, dass Gnome in der Benutzeroberfläche keine Passphrase abfragt, wenn Sie ssh und gpg vom Terminal aus verwenden

Seit ich Ubuntu Desktop 16.10 Gnome (früher 15.10) installiert habe, ärgere ich mich darüber, dass immer, wenn ich versuche, einen SSH-Schlüssel hinzuzufügen oder einen GPG-Schlüssel über das Terminal zu importieren, ein GUI-Popup-Fenster erscheint, in dem ich nach der Passphrase gefragt werde.

Mit SSH kann ich dieses Problem umgehen, indem ich einen neuen Agenten auf dem Terminal starte und dann versuche, den Schlüssel hinzuzufügen. Und schließlich fragt es mich nach der Passphrase in TTY oder nicht einer GUI.

Mit GPG habe ich gerade angefangen, es zu lernen, daher weiß ich nicht, wie ich es umgehen soll.

Gibt es eine Möglichkeit, dies zu deaktivieren und sie dazu zu bringen, nach der Passphrase in TTY zu fragen, wenn von TTY aus darauf zugegriffen wird?

Ich habe die Antworten in this question gelesen und es geht um Ubuntu 12.04 und die beiden ersten Antworten haben bei mir nicht funktioniert.

8
Starx

SSH und GPG verwenden sogenannte "Agenten", um entschlüsselte private Schlüssel zwischenzuspeichern, sodass Benutzer ihre Passphrasen nicht ständig eingeben müssen. Standardmäßig verwenden sie zu diesem Zweck das Programm pinentry.

Bevor wir fortfahren, vergewissern wir uns, dass auf Ihrem System ein Beispiel für ein Befehlszeilen-PIN-Eingabeprogramm verfügbar ist. In Ubuntus Repository haben wir pinentry-curses (seit ewig) und pinentry-tty (seit Xenial), aber sie sind nicht standardmäßig installiert. Sie können es aus dem Paket mit dem gleichen Namen erhalten:

Sudo apt install pinentry-curses

Einstellen eines anderen PIN-Eingabeprogramms

Sie können das Programm für die PIN-Eingabe folgendermaßen anpassen:

  • (pro Benutzer) Setzen Sie pinentry-program in Ihrem ~/.gnupg/gpg-agent.conf auf ein Befehlszeilen-PIN-Eingabeprogramm, z. G.:

    pinentry-program /usr/bin/pinentry-curses
    

    Sie müssen den Agenten entweder neu starten oder seine Konfiguration neu laden lassen:

    gpg-connect-agent <<< RELOADAGENT
    
  • (systemweit) In allen gängigen Linux-Distributionen, einschließlich Ubuntu, ist das voreingestellte Programm pinentry eine symbolische Verknüpfung zum eigentlichen PIN-Eingabeprogramm. Das Ziel dieser symbolischen Verknüpfung wird vom update-alternatives System verwaltet. Sie können es verwenden, um das Verknüpfungsziel in ein Befehlszeilen-PIN-Eingabeprogramm zu ändern:

    Sudo update-alternatives --config pinentry
    

Auswahl des PIN-Eingabeprogramms basierend auf der Verfügbarkeit eines Terminals

Der Nachteil dieser beiden Methoden ist, dass Sie keinen Befehlszeilen-PIN-Eintrag verwenden können, wenn SSH oder GPG von einem Programm aus aufgerufen werden, das ohne Terminal ausgeführt wird, z. G. ein grafischer SFTP-Client oder ein Mail User Agent. Besser wäre es, das grafische PIN-Eingabeprogramm nur zu verwenden, wenn ein X-Server verfügbar ist und ein Terminal un verfügbar ist. Zu diesem Zweck benötigen wir ein kleines Wrapper-Skript, das die Umgebung analysiert, bevor das richtige Pin-Eingabeprogramm verwendet wird.

Nehmen wir an, wir haben das folgende ausführbare Shell-Skript unter ~/.local/bin/my-smart-pinentry:

#!/bin/sh
set -eu

# Configuration -- adjust these to your liking
PINENTRY_TERMINAL='/usr/bin/pinentry-curses'
PINENTRY_X11='/usr/bin/pinentry-x11'

# Action happens below!
if [ -n "${DISPLAY-}" -a -z "${TERM-}" ]; then
    exec "$PINENTRY_X11" "[email protected]"
else
    exec "$PINENTRY_TERMINAL" "[email protected]"
fi

Um diesen Wrapper als PIN-Eintrag "Programm" zu verwenden, können Sie die oben erwähnte benutzerspezifische Methode verwenden. Sie können auch zur Datenbank update-alternatives hinzufügen .

10
David Foerster