Como forçar o GPG a usar a pinagem do modo de console para solicitar senhas?

57

O uso do gpg de um ambiente baseado em console, como sessões ssh, falha porque a caixa de diálogo de pinagem do GTK não pode ser mostrada em uma sessão SSH.

Eu tentei unset DISPLAY , mas isso não ajudou. As opções de linha de comando do GPG não incluem um comutador para forçar o pinentry no modo de console.

As versões mais antigas do GPG ofereciam um prompt baseado em texto que funcionava bem em sessões SSH, mas após a atualização ele simplesmente falhava.

Existe o interruptor de linha de comando --textmode mas, aparentemente, faz outra coisa.

Qual seria a maneira correta e limpa de obter entrada de pinos de texto simples para sessões remotas?

    
por ccpizza 18.12.2012 / 13:21

6 respostas

74

Para alterar o pinentry permanentemente, acrescente o seguinte ao seu ~/.gnupg/gpg-agent.conf :

pinentry-program /usr/bin/pinentry-tty

(Em versões mais antigas que não possuem pinentry-tty, use cursores de pinagem para uma janela de diálogo 'full-terminal'.)

Diga ao agente do GPG para recarregar a configuração:

gpg-connect-agent reloadagent /bye
    
por 18.12.2012 / 14:58
4

Acabei de ter este problema no Ubuntu 16.04.3 ao tentar gerar / instalar uma chave privada usando gpg2 (2.1.11) em uma conta do sistema sem uma senha e em uma conta de usuário sobre o ssh. Nada deu trabalho:

gpg: key FE17AE6D/FE17AE6D: error sending to agent: Permission denied
gpg: error building skey array: Permission denied

Encontrei então este que funcionou para mim, portanto, em resumo:

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

Para evitar o pop-up de pinentry, você pode ssh localhost . Como opção, forçar o X11 desativado, -x Disables X11 forwarding. Veja o exemplo completo abaixo.

patrick@patrick-C504:~$ ssh localhost
patrick@localhost's password: 
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.13.0-68-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

Last login: Mon Nov 16 22:48:53 2015 from localhost
patrick@patrick-C504:~$ gpg --gen-key
gpg (GnuPG) 1.4.16; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection? 4
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 
Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0) 
Key does not expire at all
Is this correct? (y/N) y

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <[email protected]>"

Real name: Foo
Name must be at least 5 characters long
Real name: FooBar
Email address: [email protected]
Comment: 
You selected this USER-ID:
    "FooBar <[email protected]>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.

gpg: gpg-agent is not available in this session
Enter passphrase:
    
por 16.11.2015 / 22:27
1

Vou copiar minha resposta de por aqui ...

Olhando para man pinentry-gnome3 , vejo isto:

   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.

Infelizmente, esse fallback de modo de texto não funciona para mim. Parece que outros têm a mesma edição . No entanto, este comentário estimulou a minha tentativa de usar um programa diferente de entrada de pinos da GUI: pinentry-gtk2 . Você pode mudar assim:

> 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

Depois que eu mudei, funcionou perfeitamente para mim! Em um terminal na área de trabalho, ele usará a entrada de senha da GUI, mas quando eu fizer ssh na minha máquina, ele usará uma entrada de senha no modo de texto.

    
por 31.05.2018 / 07:58
1

Se você não tem, instale pinentry-curses com yum ou apt-get.

Em seguida, execute:

sudo update-alternatives --config pinentry

E selecione pitadas de pinagem na lista.

    
por 11.08.2018 / 21:07
0

Eu achei o "exemplo completo" na resposta da PvdL um pouco confuso, eis o que eu faço:

ssh -X machine
# work hack hack work until I need something from gpg
ssh -x localhost -p$port
gpg2 --decrypt file.gpg
# enter password to pinentry
exit
# now the key is unlocked in gpg-agent, and I can keep decrypting files
# from my X ssh session without being asked for the password
    
por 04.01.2017 / 12:03