Posso digitar minha senha do gpg apenas uma vez e desbloquear todas as minhas subchaves (assinatura, descriptografia, autenticação)?
No momento, preciso digitar minha senha do gpg três vezes (para assinar, descriptografar e autenticação). Isso é inconveniente.
Eu tentei criar um script de shell.
#!/bin/bash
set -x
set -e
set +o history
signing_key=77BB3C48
encryption_key=CE998547
tempfile="$(mktemp)"
echo "test" > testfile
unset passphrase || exit 1
read -sp 'Enter password. ' passphrase ; echo
exec 3<<<"$passphrase"
gpg2 --no-tty --use-agent --batch --yes --passphrase-fd 3 --sign-with "$signing_key" --clearsign "$tempfile"
gpg2 --no-tty --use-agent --verify "$tempfile.asc"
gpg2 --no-tty --use-agent --yes --armor --recipient "$encryption_key" --encrypt "$tempfile"
exec 3<<<"$passphrase"
gpg2 --no-tty --use-agent --batch --decrypt --passphrase-fd 3 "$tempfile.asc"
Mas, infelizmente, dessa maneira as senhas gnupg-agent não armazenam em cache a senha. Isso pode ser corrigido?
Informação do sistema:
- Quando não estou usando esse script de shell, não tenho problemas com o gnupg-agent. Quando assino / decodifico manualmente um arquivo no shell, o pinentry solicita a senha duas vezes e o armazena em cache até a reinicialização.
- Usando o Debian Wheezy.
- versão gpg:
dpkg -l | grep gnupg
ii gnupg 1.4.12-7+deb7u3 i386 GNU privacy guard - a free PGP replacement
ii gnupg-agent 2.0.22-3 i386 GNU privacy guard - password agent
ii gnupg-curl 1.4.12-7+deb7u3 i386 GNU privacy guard - a free PGP replacement (cURL)
ii gnupg2 2.0.22-3 i386 GNU privacy guard - a free PGP replacement (new v2.x)
Eu perguntei na lista de discussão gnupg-users há um tempo atrás, mas não respondi.
Talvez essa resposta funcione? Talvez gpg-connect-agent
seja necessário?
shell-script
gpg
gpg-agent
adrelanos
fonte
fonte
exec 3<<<"$passphrase"
era novo até para mim ... E joguei uma recompensa de 250 representantes na resposta que você citar.Respostas:
Existe o gnome-keyring-daemon e o seahorse, que facilitam muito o gerenciamento de chaves e senhas.
Basicamente, se você estiver executando o gnome-keyring-daemon como um agente gpg, ele poderá desbloquear suas chaves GPG automaticamente. Isso é feito mantendo um chaveiro de senha, que contém as senhas de sites, chaves GPG, chaves SSH, etc. Esse chaveiro de senha é protegido com sua própria senha. Então você a desbloqueia e o chaveiro do gnomo desbloqueia todo o resto.
Como um bônus adicional, o gnome-keyring-daemon possui um chaveiro "login", que se a senha corresponder à sua senha de usuário, o chaveiro será desbloqueado automaticamente quando você efetuar o login.
Configuração
Como fazer isso funcionar? Basta instalar o gnome-keyring-daemon e o cavalo-marinho. O pacote deve fazer toda a configuração do sistema para você. Apenas certifique-se de não iniciar outro daemon de chaveiro ou agente GPG . O que quer que comece por último "ganha", e o chaveiro do gnomo começa na pilha do PAM, muito cedo.
Se suas chaves GPG estiverem armazenadas
~/.gnupg
, elas serão coletadas automaticamente e atuarão como o agente GPG para elas. O mesmo vale para as chaves SSH armazenadas em~/.ssh
Na primeira vez em que você tentar usar a chave privada, você verá uma caixa de diálogo com a seguinte aparência: (eu a iniciei por uma linha de comando simples
gpg -d myfile.gpg
)Basta selecionar "Desbloquear automaticamente este chaveiro sempre que estiver conectado"
Agora realmente não falamos sobre cavalos-marinhos. Isso é porque não é estritamente necessário. Tudo isso foi feito apenas com o daemon gnome-chaveiro comum. No entanto, com cavalos-marinhos, você pode visualizar e gerenciar todas as suas chaves e chaveiros. E se você usar autenticação centralizada (LDAP), precisará usá-la quando alterar sua senha de login para também alterar a senha no chaveiro "login" para corresponder a ela.
Outras senhas
Como mencionado anteriormente, o gnome-keyring-daemon também pode armazenar senhas de sites. A última vez que verifiquei o chrome suporta isso, mas o firefox não. No entanto, há um truque para fazê-lo funcionar.
Por padrão, você terá 2 chaveiros, um chaveiro "login" e um chaveiro "padrão". O chaveiro "padrão" é o padrão (daí o nome). Mas é um chaveiro separado, para que não seja desbloqueado automaticamente. No cavalo-marinho, se você clicar com o botão direito do mouse no chaveiro "login", há uma opção para "definir como padrão". Selecione isso e ele começará a se acostumar com senhas. Pessoalmente, apago o "padrão" e uso "login" para tudo.
fonte
sudo apt-get remove gnupg-agent
esudo apt-get install gnome-keyring seahorse
. Em seguida, criou um arquivo/etc/X11/Xsession.d/999gnomekeyring
com o seguinte conteúdo.eval $(/usr/bin/gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh) export GNOME_KEYRING_CONTROL GNOME_KEYRING_PID GPG_AGENT_INFO SSH_AUTH_SOCK
(Caso contrário, o gnome-keyring nem começaria no KDE.) Agora, quando eu executargpg -d myfile.gpg
, ser-me-á pedido a senha e ela será armazenada em cache, mas nunca fui solicitado com esta caixa de diálogo./etc/X11/Xsession.d
. Isso deveria ser feito na pilha do PAM. Você deve ter umasession optional pam_gnome_keyring.so auto_start
entrada em um ou mais arquivos em/etc/pam.d
. Infelizmente eu não uso o debian, então não sei qual. Se não estiver lá, esse é o problema./etc/X11/Xsession.d
,ps aux | grep gnome
mostra que o gnome-keyring-daemon não é iniciado. (No entanto, removi-o.)/usr/share/doc/libpam-gnome-keyring/README.Debian
DizIf you want to start gnome_keyring from another display manager, you need to add the following lines to the corresponding /etc/pam.d/?dm file: auth optional pam_gnome_keyring.so session optional pam_gnome_keyring.so auto_start
(novas linhas removidas por comentários). Fez isso, adicionado a/etc/pam.d/kdm
, reiniciou o kdm. Nenhum carregamento do agente, nenhum disponível.kdm
e o coloca/etc/pam.d/kdm
, deve ter feito. A única coisa que posso sugerir se você ainda deseja seguir essa rota é vasculhar os logs. Desculpe a esperança falsa, pensei que isso seria uma solução simples para você.Eu fiz alguma investigação e o resultado é surpreendente para mim, mas simples:
Quando chamado desta forma
gpg
não se comunica comgpg-agent
em tudo !gpg
é capaz de realizar todas essas operações por conta própria.Mas se você
gpg-agent
nem sabe que algo aconteceu, dificilmente poderá saber uma frase secreta que não conhecia antes.fonte
Can I enter my gpg password just once and unlock all my sub keys (signing, decryption, authentication)?
) Espero canalizar a senhagpg-agent
ougpg-connect-agent
é de alguma forma possível.