AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 772283
Accepted
fbence
fbence
Asked: 2024-03-14 03:51:36 +0800 CST2024-03-14 03:51:36 +0800 CST 2024-03-14 03:51:36 +0800 CST

gpg-agent “esquecendo” a senha da chave, ao receber muitas solicitações

  • 772

Estou executando o Ubuntu (via Regolith) e minha chave gpg é desbloqueada quando eu faço login. Estou executando várias operações de descriptografia em paralelo e notei que, se eu ultrapassar 7, gpg-agentvou "esquecer" que a chave já está desbloqueada e sou solicitado a fazer uma pinentry.

❯ gpg --version
gpg (GnuPG) 2.2.27
libgcrypt 1.10.1

Fiz um exemplo mínimo de trabalho para demonstrar isso em python.

Crie um arquivo de teste para descriptografar com: echo "something" | gpg --encrypt -o test.gpg. A execução gpg --decrypt test.gpgno shell não solicita a senha.

Usando o script abaixo, se WORKERNUMestiver definido abaixo de 8 (na minha máquina, mas defini-lo como 1, acho que deve funcionar para qualquer máquina), o script será descriptografado com satisfação, sem solicitar uma senha longa. Mas se eu aumentar para 8 ou mais, começo a receber solicitações para inserir minha senha, embora pareça que não é de todos os processos, apenas de alguns deles. A execução dos processos também obviamente começa a travar (presumo que eles estejam aguardando gpg-agent).

import subprocess
import multiprocessing as mp
import time



the_queue = mp.Queue()
WORKERNUM = 7

def worker_main(queue):
    while True:
        msg = queue.get(True)
        print(time.time(), msg)
        out = subprocess.run(["gpg", "--decrypt", "test.gpg"], capture_output=True)
        print(msg, time.time(), out.stdout)


the_pool = mp.Pool(WORKERNUM, worker_main, (the_queue,))

counter = 0
while True:
    counter += 1
    the_queue.put(counter)
    print(the_queue.qsize())
    while the_queue.qsize() > 10:
        time.sleep(0.1)

Tentei passar --batchpara o comando decrypt, mas isso não mudou nada. Estive pesquisando as páginas de manual para gpgver gpg-agentse há algo mencionado que possa estar relacionado a isso, mas não consegui encontrar nada. Eu tenho duas perguntas:

a) por que isso acontece eb) há algo que eu possa configurar para que, em vez de ter que descobrir o tamanho máximo do pool de processamento para evitar isso, gpglide com isso e não receba uma pinentry

gpg
  • 1 1 respostas
  • 32 Views

1 respostas

  • Voted
  1. Best Answer
    fbence
    2024-03-17T20:05:57+08:002024-03-17T20:05:57+08:00

    Após um monitoramento cuidadoso, journalctldescobri que o erro realCannot allocate memory era . Com base nesta discussão , gpg-agenta memória segura pode ficar sem memória se vários threads tentarem acessá-la. auto-expand-secmem 100A configuração ~/.gnupg/gpg-agent.confresolve o problema.

           --auto-expand-secmem n                                                                                                                                  Allow Libgcrypt to expand its secure memory area as required. The optional
    value n is a non-negative integer with a suggested size in bytes of each
    additionally allocated secure memory area. The value is rounded up to the next
    32 KiB; usual C style prefixes are allowed. For an heavy loaded gpg-agent with
    many concurrent connection this option avoids sign or decrypt errors due to out
    of secure memory error returns.
    
    
    • 0

relate perguntas

  • Eu criei um par de chaves de criptografia no Enigmail, mas não consigo vê-lo quando faço `gpg --list-keys` no terminal

  • falha de gerenciamento de chave apt qualquer solução on-line completa ou método de download de chave

  • Como posso recuperar (ou redefinir) as chaves GPG de *.debian.org?

  • Por que às vezes é necessário importar chaves manualmente?

  • gpg — o comando list-keys gera uid [ desconhecido ] depois de importar a chave privada para uma instalação limpa

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve