O uso de gpg em um ambiente baseado em console, como sessões ssh, falha porque o diálogo pinentry GTK não pode ser mostrado em uma sessão SSH.
Eu tentei, unset DISPLAY
mas não ajudou. As opções de linha de comando do GPG não incluem uma opção para forçar o pinentry ao 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, apenas falha.
Existe a --textmode
opção de linha de comando, mas, aparentemente, faz outra coisa.
Qual seria a maneira correta e limpa de obter entrada de pinos em texto sem formatação para sessões remotas?
DISPLAY="" gpg2 ...
me ajudou, eu também instalados pinentry-maldições + pinentry-tty de antemão, não tenho certeza se eles são estritamente necessárioRespostas:
Para alterar a pinentry permanentemente, anexe o seguinte ao seu
~/.gnupg/gpg-agent.conf
:(Nas versões mais antigas que não possuem pinentry-tty, use pinentry-curses para uma janela de diálogo 'terminal completo').
Diga ao agente GPG para recarregar a configuração:
fonte
gpg-agent
em si deve detectar a presença ou ausência de$DISPLAY
e escolher o pinentry apropriate ...DISPLAY
definido não significa necessariamente que eu possa ou queira usá-lo, por exemplo, quando conectado por SSH.su
não altera a propriedade do seu TTY, então você precisa manualmentechown
. Veja este artigo .ls /usr/bin | grep pinentry
. Vejopinentry
,pinentry-curses
,pinentry-emacs
,pinentry-gnome3
,pinentry-gtk2
,pinentry-qt
epinentry-tty
. Dessa forma, você pode escolher o que melhor combina com você, se você não tiver$DISPLAY
problemas.Eu apenas tive esse problema no Ubuntu 16.04.3 ao tentar gerar / instalar uma chave privada usando o gpg2 (2.1.11) em uma conta do sistema sem senha e em uma conta de usuário pelo ssh. Nada funcionou dando:
Eu então encontrei isso que funcionou para mim, então, resumidamente:
fonte
Em uma caixa debian:
(e defina-o como pinentry-tty)
fonte
No Ubuntu 18.04, com a instalação padrão do gpg 2.2.4, tenho
Consegui fazer o seguinte para ter uma entrada de PIN baseada em texto:
fonte
Se você não o possui, instale
pinentry-curses
com o yum ou o apt-get.Então corra:
sudo update-alternatives --config pinentry
E selecione pinentry-maldições na lista.
fonte
Vou copiar minha resposta daqui ...
Olhando
man pinentry-gnome3
, vejo o seguinte:Infelizmente, esse fallback em modo de texto não funciona para mim. Parece que outros têm o mesmo problema . No entanto, este comentário estimulou minha para tentar um programa de pin-entrada GUI diferente:
pinentry-gtk2
. Você pode mudar assim:Depois que mudei, funcionou perfeitamente para mim! Em um terminal na área de trabalho, ele usará a entrada de senha da GUI, mas quando eu ssh na minha máquina, ele usará uma entrada de senha em modo de texto.
fonte
Para evitar o pop-up pinentry, você poderia
ssh localhost
. Forçando opcionalmente o X11 desativado,-x Disables X11 forwarding.
veja o exemplo completo abaixo.fonte
-x Disables X11 forwarding.
deve impedir qualquer encaminhamento do X11. A resposta é atualizada.Achei o "exemplo completo" na resposta do PvdL um pouco confuso, eis o que faço:
fonte
Se você fizer isso
export GPG_TTY=$(tty)
eunset DISPLAY
ele lhe dará uma caixa de diálogo TLI pedindo a senha. Digitar a senha correta a decriptografa.Se você NÃO fizer a exportação acima de GPG_TTY e desabilitar o DISPLAY, ele espera usar o X Windows. Se você iniciou sua sessão (como PuTTY) a partir de um sistema MS-Windows com o encaminhamento X11 ativado, deseja enviar a caixa de diálogo X-Window para o seu sistema MS Windows. Você pode usar um emulador de X, como Exceed ou Cygwin / X no Windows, para permitir que o prompt do X-Window apareça a senha na caixa do MS-Windows.
No entanto, você pode eliminar a necessidade de definir GPG_TTY e desabilitar o DISPLAY e obter o TLI ou a GUI executando a linha de comando com a
--batch
opção e inserindo a senha com a--passphrase
opção:Todos os três métodos funcionaram para mim hoje no RHEL6 executando o gnupg2.
fonte
export GPG_TTY=$(tty)
é suficiente. Você já tentou isso? Você tem uma referência que diz que tambémunset DISPLAY
é necessário? PS As pessoas não gostam de colocar senhas na linha de comando.