
Estou usando o Mountain Lion e quando criptografo um arquivo usando gpg, uma GUI irritante solicita que eu insira a senha. Gostaria que a senha fosse solicitada no terminal, não em uma GUI externa. Posso estar fazendo isso remotamente, por exemplo.
Existe uma maneira de fazer o gpg para mac solicitar a senha no terminal e não em um prompt da GUI?
ATUALIZAR:Isso parece muito difícil com o gpg2, então fiz o downgrade para o gpg1. Tentei de tudo com gpg2 (MacGPG2) e nada funcionou. É uma merda! Com gpg1 funciona bem!
Responder1
O seguinte pressupõe que você esteja usando gnupg2 com macports, e não MacGPG2, mas a correção provavelmente se aplicará ao seu caso de uso.
Instale o pacote 'pinentry' do macports:
port -v install pinentry
Edite seu ~/.gnupg/gpg-agent.conf para se adequar:
pinentry-program /opt/local/bin/pinentry-curses
Remova ou comente a entrada existente do 'programa pinentry'. Recarregue seu terminal ou use isto:
echo RELOADAGENT | gpg-connect-agent
Feito. Agora você deve ter pinentry/passphrase no terminal (diálogo de maldições). Se você deseja ter o comportamento antigo do gpg v1.x do inline-ttl pinentry, você pode usar um comando './configure' personalizado com o pacote macports pinentry.
Se você já instalou ferramentas MacGPG2 / GPG para Mac, pode ser necessário encerrar o processo 'shutdown-gpg-agent' antes que a caixa de diálogo pinentry funcione (ou apenas reinicializar).
user$ ps ax |grep shutdown-gpg-agent
1854 ?? S 0:00.01 /bin/bash /usr/local/MacGPG2/libexec/shutdown-gpg-agent
user$ kill -KILL 1854
Responder2
Você pode verificar se está acessando uma ssh
conexão verificando a variável de ambiente SSH_CONNECTION
.
export GPG_TTY=$(tty)
if [[ -n "$SSH_CONNECTION" ]] ;then
export PINENTRY_USER_DATA="USE_CURSES=1"
fi
Eu uso verificações para ver se estou atropelando ssh
ou atropelando tmux
usando a seguinte verificação:
export GPG_TTY=$(tty)
if [[ -n "$SSH_CONNECTION" || -n "$TMUX" ]] ;then
export PINENTRY_USER_DATA="USE_CURSES=1"
fi
Responder3
Três palavras: compile você mesmo. Sim, você pode fazer isso! Certifique-se de se livrar do arquivo gpg-agent.conf primeiro!
Responder4
Acabei de compilar o GnuPG (versão 2.2.9) e todas as suas dependências para um Mac OS High Sierra. Foi bastante interessante. Depois de resolver um pequeno problema com os testes da libgcrypt (com uma ajudinha da respectiva receita do Homebrew), tudo funcionou basicamente fora da caixa.
Ao tentar importar minha chave privada, não consegui, pois faltava no sistema um programa de pinentry. Uma pesquisa rápida me fez chegar a esta página, mas não foi muito útil, então simplesmente decidi compilar o pinentry sozinho.
Eu já sabia, pela minha experiência usando GnuPG em máquinas Linux, que gostaria de digitar minha senha em um prompt normal na linha de comando, sem aquelas caixas de diálogo irritantes e perturbadoras. E é por isso que estou compartilhando o processo aqui. É simples, mas pode ajudar alguém com um problema semelhante.
Comece obtendo o código fonte do pinentry do GnuPG. Verifique seuslocal na rede Internet. No momento em que este artigo foi escrito, o link para baixar a fonte erahttps://gnupg.org/ftp/gcrypt/pinentry/pinentry-1.1.0.tar.bz2. Baixe também oassinaturae verifique a autenticidade usando o próprio gpg.
NÃO PULE A VERIFICAÇÃO,Isso é importante! Este programa terá acesso a todas as suas senhas gpg e chaves privadas. É melhor você ter certeza de que é o que afirma ser! Se você tiver problemas, certifique-se de ter importado as chaves dos mantenedores do GnuPG (vejaaqui):
$ gpg --verify pinentry-1.1.0.tar.bz2.sig pinentry-1.1.0.tar.bz2
Agora que você tem certeza de que está trabalhando com arquivos fonte autênticos, extraia o código fonte e cd
nesse diretório:
$ tar xvf pinentry-1.1.0.tar.bz2
$ cd pinentry-1.1.0
A compilação é muito simples:
$ ./configure --enable-pinentry-tty
$ make
$ sudo make install
Pode ser que ele configure
reclame de alguma dependência ausente. Nesse caso, basta ler o erro e baixar a dependência da página do GnuPG (sempre verificando a integridade do download!).
A parte importante dos comandos acima é o flag --enable-pinentry-tty
. Pinentry TTY é a maneira mais simples de digitar sua senha em um prompt muito normal e enfadonho na linha de comando. Exatamente o que eu queria! Se não me engano, a curses
versão será construída de qualquer maneira. Embora seja uma opção CLI, considero-a tão perturbadora quanto todas as outras.
Depois de instalado, você verá alguns novos binários no formato /usr/local/bin
. Certifique-se de ter um chamado pinentry-tty
(se não tiver, algo deu errado...).
Para tornar esse novo binário sua maneira padrão de digitar a senha gpg, adicione a seguinte linha ~/.gnupg/gpg-agent.conf
(crie o arquivo e o diretório se eles ainda não existirem):
pinentry-program /usr/local/bin/pinentry-tty
Provavelmente não funcionará se você tentar imediatamente, porque provavelmente ainda tem um agente gpg em execução com configuração antiga. Vá em frente e mate todos os agentes gpg e crie um novo:
$ sudo killall gpg-agent
$ gpg-agent --daemon
É isso! Aproveite sua pinentry TTY à moda antiga :)