106 votes

Comment forcer GPG à utiliser le mode console pour demander les mots de passe ?

L'utilisation de gpg à partir d'un environnement en console comme les sessions ssh échoue car la boîte de dialogue GTK pinentry ne peut pas être affichée dans une session SSH.

J'ai essayé unset DISPLAY mais cela n'a pas aidé. Les options de la ligne de commande GPG n'incluent pas de commutateur pour forcer le pinentry en mode console.

Les anciennes versions de GPG offraient une invite textuelle qui fonctionnait bien dans les sessions SSH, mais après la mise à jour, elle échoue tout simplement.

Il y a le --textmode mais apparemment, il fait autre chose.

Quelle serait la manière correcte et propre d'obtenir un code d'accès en texte clair pour les sessions distantes ?

122voto

James Mertz Points 390

Pour changer le pinentry de manière permanente, ajoutez ce qui suit à votre fichier ~/.gnupg/gpg-agent.conf :

pinentry-program /usr/bin/pinentry-tty

(Dans les anciennes versions qui ne disposent pas de pinentry-tty, utilisez pinentry-curses pour obtenir une fenêtre de dialogue 'full-terminal').

Dites à l'agent GPG de recharger la configuration :

gpg-connect-agent reloadagent /bye

19voto

wenbert Points 1892

Sur une boîte Debian :

sudo apt install pinentry-tty
sudo update-alternatives --config pinentry

(et le définir à pinentry-tty)

11voto

Roc W. Points 240

Sur Ubuntu 18.04, avec l'installation par défaut de gpg 2.2.4, j'obtiens les résultats suivants

/usr/bin/pinentry
/usr/bin/pinentry-gnome3
/usr/bin/pinentry-gtk-2
/usr/bin/pinentry-x11

J'ai pu faire ce qui suit pour avoir une saisie du code PIN en mode texte :

export GPG_TTY=$(tty)
gpg-connect-agent updatestartuptty /bye >/dev/null

10voto

racitup Points 201

Je viens d'avoir ce problème sur Ubuntu 16.04.3 en essayant de générer/installer une clé privée en utilisant gpg2 (2.1.11) sur un compte système sans mot de passe, et sur un compte utilisateur via ssh. Rien ne fonctionnait en donnant :

gpg : clé FE17AE6D/FE17AE6D : erreur d'envoi à l'agent : Permission refusée
gpg : erreur dans la construction du tableau de clés : Permission refusée

J'ai alors trouvé este qui a fonctionné pour moi, donc en bref :

pico ~/.gnupg/gpg-agent.conf
# add: allow-loopback-pinentry
gpg-connect-agent reloadagent /bye
gpg2 --pinentry-mode loopback --import private.key

8voto

mblythe Points 391

Je vais copier ma réponse de par ici ...

Regarder man pinentry-gnome3 je vois ça :

   pinentry-gnome3  implements  a PIN entry dialog based on GNOME 3, which
   aims to follow the GNOME Human Interface Guidelines as closely as  pos
   sible.   If the X Window System is not active then an alternative text-
   mode dialog will be used.  There are other flavors that  implement  PIN
   entry dialogs using other tool kits.

Malheureusement, cette solution de repli en mode texte ne fonctionne pas pour moi. Il semble que d'autres ont le même numéro . Cependant, ce commentaire m'a incité à essayer un autre programme d'entrée d'épingle GUI : pinentry-gtk2 . Vous pouvez changer comme ceci :

> sudo update-alternatives --config pinentry
There are 3 choices for the alternative pinentry (providing /usr/bin/pinentry).

  Selection    Path                      Priority   Status
------------------------------------------------------------
* 0            /usr/bin/pinentry-gnome3   90        auto mode
  1            /usr/bin/pinentry-curses   50        manual mode
  2            /usr/bin/pinentry-gnome3   90        manual mode
  3            /usr/bin/pinentry-gtk-2    85        manual mode

Press <enter> to keep the current choice[*], or type selection number: 3
update-alternatives: using /usr/bin/pinentry-gtk-2 to provide /usr/bin/pinentry (pinentry) in manual mode

Une fois que j'ai changé, ça a marché parfaitement pour moi ! Dans un terminal sur le bureau, il utilisera le mot de passe de l'interface graphique, mais lorsque je me connecterai à ma machine, il utilisera un mot de passe en mode texte.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X