web-dev-qa-db-fra.com

Désactiver gnome de demander la phrase secrète dans l'interface graphique lors de l'utilisation de ssh et gpg depuis un terminal

Depuis que j'ai installé Ubuntu Desktop 16.10 Gnome (auparavant, j'avais 15.10), le fait que, chaque fois que j'essaie d'ajouter une clé SSH ou d'importer une clé GPG à l'aide d'un terminal, une fenêtre contextuelle GUI apparaît et demande le mot de passe.

Avec SSH, je résous ce problème en démarrant un nouvel agent sur le terminal, puis en essayant d’ajouter la clé. Et enfin, il me demande la phrase secrète dans TTY ou pas une interface graphique.

Avec GPG, je viens juste de commencer à l’apprendre, alors je ne sais pas trop comment contourner le problème.

Est-il possible de désactiver cette option et de leur demander de saisir la phrase secrète dans TTY lors d'un accès depuis TTY?

J'ai lu les réponses dans this question et il s'agit d'ubuntu 12.04 et les deux premières réponses n'ont pas fonctionné pour moi.

8
Starx

SSH et GPG utilisent des "agents" pour mettre en cache les clés privées déchiffrées, afin que les utilisateurs ne soient pas obligés de saisir leurs phrases de passe à tout moment. Par défaut, ils utilisent le programme pinentry à cette fin.

Avant de continuer, assurons-nous qu'un exemple de programme de saisie de code confidentiel par ligne de commande est disponible sur votre système. Dans le référentiel Ubuntu, nous avons pinentry-curses (depuis toujours) et pinentry-tty (depuis Xenial) mais ils ne sont pas installés par défaut. Vous pouvez l'obtenir à partir du package du même nom:

Sudo apt install pinentry-curses

Définir un programme d’entrée de code PIN différent

Vous pouvez ajuster le programme utilisé pour la saisie des broches de l'une des manières suivantes:

  • (par utilisateur) Définition de pinentry-program dans votre ~/.gnupg/gpg-agent.conf dans un programme d’entrée de code confidentiel de ligne de commande, e. g.:

    pinentry-program /usr/bin/pinentry-curses
    

    Vous devez soit redémarrer l'agent, soit le faire recharger sa configuration:

    gpg-connect-agent <<< RELOADAGENT
    
  • (à l’échelle du système) Dans toutes les distributions Linux courantes, y compris Ubuntu, le programme pinentry par défaut est en fait un lien symbolique vers le programme de saisie des broches. La cible de ce lien symbolique est gérée par le système update-alternatives. Vous pouvez l’utiliser pour changer la cible du lien en un programme de saisie des broches en ligne de commande:

    Sudo update-alternatives --config pinentry
    

Choix du programme de saisie des broches en fonction de la disponibilité d'un terminal

L'inconvénient de ces deux méthodes est que vous ne pourrez pas utiliser une entrée de code confidentiel de ligne de commande si SSH ou GPG sont appelés à partir d'un programme exécuté sans terminal, e. g. un client SFTP graphique ou un agent d'utilisateur de messagerie. Une meilleure solution consiste à utiliser le programme de saisie graphique des broches uniquement lorsqu'un serveur X est disponible et qu'un terminal est un disponible. Pour ce faire, nous avons besoin d’un petit script qui analyse l’environnement avant de passer au programme de saisie des broches de droite.

Supposons que nous ayons le script shell exécutable suivant à ~/.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" "$@"
else
    exec "$PINENTRY_TERMINAL" "$@"
fi

Pour utiliser ce wrapper comme entrée de programme "programme", vous pouvez utiliser la méthode par utilisateur mentionnée ci-dessus. Vous pouvez également l'ajouter à la base de données update-alternatives .

10
David Foerster