Como posso resolver este problema do agente ssh?

17

Estou usando o Linux Mint e não consegui usar o gnome-keyring para desbloquear automaticamente no login, parece.

Um sintoma do meu problema é o seguinte:

$ ssh-add
Identity added: /home/me/.ssh/id_rsa (/home/me/.ssh/id_rsa)

$ git pull
WARNING: gnome-keyring:: couldn't connect to: /tmp/keyring-Nmf3J3/pkcs11: No such file or directory

Como posso fazer com que o git possa empurrar / puxar sem qualquer entrada de frase secreta de mim?

Eu sei que há várias coisas aqui com o gnome-keyring e o ssh-agent, mas não consegui descobrir.

A execução de ssh-add durante uma sessão significa que não sou mais solicitado pela minha senha para o SSH / git.

O problema é que eu precisaria executar ssh-add durante cada sessão - devo estar perdendo como desbloquear o conjunto de chaves do Gnome no login.

$ export | grep GNOME          
GNOME_KEYRING_CONTROL=/tmp/keyring-hjMM4V
GNOME_KEYRING_PID=1961

Aconteceu novamente durante a mesma sessão da primeira edição. Eu fiz git pull e recebi WARNING: gnome-keyring:: couldn't connect to: /tmp/keyring-hjMM4V/pkcs11: No such file or directory .

$ env | grep SSH
SSH_AGENT_PID=2116
SSH_AUTH_SOCK=/tmp/ssh-OACxJMBY2038/agent.2038

$ ps -fp $SSH_AGENT_PID
UID        PID  PPID  C STIME TTY          TIME CMD
eoin      2116  2038  0 09:47 ?        00:00:00 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session x-session-manager
    
por eoinoc 22.10.2012 / 13:25

4 respostas

2

O que deve acontecer é:

Você inicia uma sessão gnome, parte da qual um daemon gnome-keyring (que também atua como um agente ssh) é iniciado e o ambiente de qualquer coisa iniciada durante essa sessão do gnome é atualizado com informações sobre como entrar em contato com esse agente ssh. A senha que você emite ao efetuar login graficamente é usada para desbloquear o chaveiro padrão.

Quando você usa o gnome-keyring como um ssh-agent, você não quer usar outro agente como ssh-agent .

Quando a sua sessão X termina, o mesmo acontece com o gnome-keyring. Mas sua sessão do tmux permanece. Então, mesmo se você iniciar outro gnome-keyring ou ssh-agent, o ambiente dos processos já iniciados por tmux não poderá falar com ele a menos que você atualize seu ambiente com o caminho do novo socket.

O que você pode fazer é:

gnome-keyring-daemon -r > ~/.gkr

E . ~/.gkr em todos os shells que você quer usar o novo gnome-keyring

Atenção, no entanto, a qual DISPLAY o gnome-keyring-daemon irá se conectar.

    
por 29.10.2012 / 12:24
2

A primeira coisa que eu tentarei é apt-get install ssh-askpass-gnome caso contrário você não tenha esse pacote (ou algum programa askpass alternativo) instalado, então o gnome não pode solicitar sua senha quando você precisar desbloquear sua chave.

Você também precisará ter sua variável DISPLAY definida corretamente:

$ echo $DISPLAY
:0.0

Além disso, como você está começando seu terminal? Pode haver um problema com a maneira como você está iniciando a sessão de terminal e se herda ou não de gnome-session . Isso pode acontecer quando você usa algum programa gnome-gnome para definir seus atalhos de teclado.

Supondo que você use gnome-terminal , você pode verificar usando pstree . Aqui você pode ver a herança correta acontecendo:

$ pgrep gnome-terminal | xargs -l1 pstree -s 
init(1)───lightdm(1643)───lightdm(26912)───gnome-session(27049)───xmonad-x86_64-l(27139)───gnome-terminal(26036)─┬─bash(26041)
                                                                                                                 ├─gnome-pty-helpe(+
                                                                                                                 ├─{gnome-terminal}+
                                                                                                                 ├─{gnome-terminal}+
                                                                                                                 └─{gnome-terminal}+

Considerando que nesta sessão não é herdada de gnome-session :

$ pgrep gnome-terminal | xargs -l1 pstree -s 
init(1)───sh(25919)───gnome-terminal(25920)─┬─bash(25927)
                                            ├─gnome-pty-helpe(25926)
                                            ├─{gnome-terminal}(25921)
                                            ├─{gnome-terminal}(25924)
                                            └─{gnome-terminal}(25928)

Além disso, verifique se ssh-agent está sendo iniciado por gnome-session :

$ pgrep ssh-agent | xargs -l1 pstree -s
init(1)───lightdm(1643)───lightdm(26912)───gnome-session(27049)───ssh-agent(27091)
    
por 28.12.2012 / 09:57
1

Eu acho problema para armazenar permanentemente a chave SSH protegida por senha.

Por favor, veja os seguintes recursos:

por 28.12.2012 / 10:14
-1

Adicione isto ao seu .bash_profile

if [ -n "$SSH_AUTH_SOCK" \
    -a "${SSH_AUTH_SOCK::13}" = "/tmp/keyring-" \
    -a ! -L "$SSH_AUTH_SOCK" ]
then
    OLD_AUTH_SOCK="$SSH_AUTH_SOCK"
    eval 'ssh-agent'
    mv "$OLD_AUTH_SOCK" "$OLD_AUTH_SOCK"~
    ln -sfn "$SSH_AUTH_SOCK" "$OLD_AUTH_SOCK"
    SSH_AUTH_SOCK="$OLD_AUTH_SOCK"
fi
    
por 02.11.2012 / 08:04