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 / 410779
Accepted
mtalexan
mtalexan
Asked: 2017-12-14 17:22:05 +0800 CST2017-12-14 17:22:05 +0800 CST 2017-12-14 17:22:05 +0800 CST

uso do chaveiro gnome sem uma sessão x

  • 772

Meu caso de uso é que eu tenho um servidor sem cabeça no qual o desenvolvimento de software é executado. Normalmente, habilito o encaminhamento X11 para as conexões SSH, mas não posso para locais distantes com conexões lentas.
Preciso de armazenamento seguro e armazenamento em cache para minhas credenciais git, pois trabalho regularmente com 18 a 20 repositórios em uma árvore, então estou usando git-credential-gnome-keyring como o git credential.helper, que se comunica usando o libgnome-keyring para o gnome-keyring-daemon. Para testar as soluções, configurei um PC com um monitor, confirmei se o chaveiro funcionava por padrão no sistema e tentei com SSH. Funciona com encaminhamento X11, mas não funciona sem ele.

Quando estou conectado sem o encaminhamento X11, ocorre o seguinte erro quando o chaveiro é consultado e a ferramenta volta a solicitar na linha de comando:

** (process:18305): CRITICAL **: Error communicating with gnome-keyring-daemon

A investigação revela que o problema básico é que o gnome-keyring-daemon está esperando que as conexões usem o dbus para falar com ele. O dbus não é iniciado se não houver sessão X11, portanto, não há barramento dbus comum para o gnome-keyring-daemon e libgnome-keyring se conectarem.

Encontrei duas soluções que outras pessoas postaram para esse problema, embora nenhuma delas funcione corretamente para mim.

  1. Obtenha uma porta DBUS de uma sessão existente que usa X11
  2. Iniciar manualmente uma nova porta DBUS

Ao conectar a uma porta DBUS existente, o conceito básico é encontrar o PID de uma sessão de login existente, despejar o ambiente para esse PID do procfs, procurá-lo DBUS_SESSION_BUS_ADDRESSe exportá-lo no ambiente atual. Como esta é a variável usada para publicar o barramento DBUS sendo usado por tudo nas sessões, definir isso deve permitir que tudo na sessão se comunique em um barramento DBUS comum, embora seja o barramento associado a uma sessão diferente.
Fontes aqui:
https://ubuntuforums.org/showthread.php?t=1059023

https://ask.fedoraproject.org/en/question/45246/error-communicating-with-gnome-keyring-daemon-in-ssh- sessão/

Código adicionado ao meu .bashrc sendo executado no login ssh:

if [ -z "$DBUS_SESSION_BUS_ADDRESS" ] ; then
    local myPID=`pgrep "(.*session|fluxbox)" | head -n1`
    if [ -n "$myPID" ] ; then
        local myVar=`cat /proc/${myPID}/environ | grep -z "^DBUS_SESSION_BUS_ADDRESS=" | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//'`
        if [ -n "$myVar" ] ; then
            export DBUS_SESSION_BUS_ADDRESS=$myVar
        fi
    fi
fi

O segundo método, iniciar manualmente o DBUS para a sessão, envolve usar dbus-launchpara criar uma nova sessão e definir o DBUS_SESSION_BUS_ADDRESSambiente e, em seguida, iniciar o gnome-keyring-daemon com todos os serviços necessários para que ele veja o endereço do barramento DBUS que criamos em vez de um endereço de barramento vazio. Esta solução pode ou não exigir que o gnome-keyring-daemon seja alterado para executar uma instância por sessão em vez de uma instância por sistema, mas não está claro.
Fontes:
Começando com o número 8: https://support.wandisco.com/index.php?/Knowledgebase/Article/View/362/17/how-to-setup-encrypted-svn-password-storage-using-gnome- keyring-in-an-ssh-session

Como modificar a linha "Exec" de um serviço dbus sem perder as alterações em caso de atualização
Código adicionado ao meu .bashrc sendo executado no login do ssh:

# then DBUS wasn't started for this session and needs to be
if [ -z "$DBUS_SESSION_BUS_ADDRESS" ] ; then
    # start a new dbus session and make sure the variables are exported (automatic output)
    eval `dbus-launch --sh-syntax`

    # make sure gnome-keyring-daemon is using all the necessary components (it may not be by default)
    # Capture the output, which is a series of variable setting commands, one on eachline, and
    # export them while setting them
    while read -r LINE
    do
        export $LINE
    done <<< $(gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh)
fi

Ambas as soluções fornecem o mesmo resultado de falha. Em vez de produzir imediatamente o erro indicando que o gnome-keyring-daemon não pode ser comunicado, o processo trava por um tempo e, em seguida, produz esta saída:

Gkr-Message: secret service operation failed: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.

** (process:31155): CRITICAL **: Error communicating with gnome-keyring-daemon

Não estou claro sobre como o gnome-keyring-daemon está interagindo com o DBUS, mas está claro a partir do segundo conjunto de resultados de erro que não é acessível por meio de um barramento DBUS recém-criado ou processo cruzado em um barramento DBUS diferente. Algumas das coisas que descobri sugerem que o daemon do chaveiro gnome pode precisar que o DBUS seja iniciado antes dele, mas não está claro se esse é o caso do uso (libgnome-keyring) ou do daemon.

Como faço isso funcionar?

x11 d-bus
  • 1 1 respostas
  • 3402 Views

1 respostas

  • Voted
  1. Best Answer
    binarym
    2019-06-21T08:30:08+08:002019-06-21T08:30:08+08:00

    Esta pode ser uma resposta estúpida ... mas, o gnome-keyring precisa acessar uma sessão X11, pelo menos para solicitar a chave mestra. Portanto, é simplesmente impossível fazê-lo funcionar, por design ... não é?

    EDIT: Talvez não tão impossível. Veja este post , parecido com o seu problema:

    • 1

relate perguntas

  • Arch Linux: executando o VirtualBox (VM) sem um gerenciador de janelas

  • erro de falta de dois pontos xrdb

  • Tornar as coisas maiores sem alterar a resolução? [AMIGO]

  • O encaminhamento SSH X11 funciona apenas ao usar

Sidebar

Stats

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

    Matriz JSON para bash variáveis ​​usando jq

    • 4 respostas
  • Marko Smith

    A data pode formatar a hora atual para o fuso horário GMT? [duplicado]

    • 2 respostas
  • Marko Smith

    bash + lê variáveis ​​e valores do arquivo pelo script bash

    • 4 respostas
  • Marko Smith

    Como posso copiar um diretório e renomeá-lo no mesmo comando?

    • 4 respostas
  • Marko Smith

    conexão ssh. Conexão X11 rejeitada devido a autenticação incorreta

    • 3 respostas
  • Marko Smith

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

    • 7 respostas
  • Marko Smith

    comando systemctl não funciona no RHEL 6

    • 3 respostas
  • Marko Smith

    rsync porta 22 e 873 uso

    • 2 respostas
  • Marko Smith

    snap /dev/loop em 100% de utilização -- sem espaço livre

    • 1 respostas
  • Marko Smith

    chave de impressão jq e valor para todos no subobjeto

    • 2 respostas
  • Martin Hope
    EHerman Matriz JSON para bash variáveis ​​usando jq 2017-12-31 14:50:58 +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
  • Martin Hope
    Drux A data pode formatar a hora atual para o fuso horário GMT? [duplicado] 2017-12-26 11:35:07 +0800 CST
  • Martin Hope
    AllisonC Como posso copiar um diretório e renomeá-lo no mesmo comando? 2017-12-22 05:28:06 +0800 CST
  • Martin Hope
    Steve Como as permissões de arquivo funcionam para o usuário "root"? 2017-12-22 02:46:01 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST
  • Martin Hope
    Cbhihe Altere o editor padrão para vim para _ sudo systemctl edit [unit-file] _ 2017-12-03 10:11:38 +0800 CST
  • Martin Hope
    showkey Como baixar o pacote não instalá-lo com o comando apt-get? 2017-12-03 02:15:02 +0800 CST
  • Martin Hope
    youxiao Por que os diretórios /home, /usr, /var, etc. têm o mesmo número de inode (2)? 2017-12-02 05:33:41 +0800 CST
  • Martin Hope
    user223600 gpg — o comando list-keys gera uid [ desconhecido ] depois de importar a chave privada para uma instalação limpa 2017-11-26 18:26:02 +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