Como posso obter o ssh-agent trabalhando sobre o ssh e no tmux (no OS X)?

17

Eu tenho uma chave privada configurada para minha conta do github, a senha que, acredito, está armazenada nas chaves do OS X. Eu certamente não tenho que digitá-lo quando eu abro uma janela de terminal e digito ssh [email protected] .

No entanto, quando estou executando bash sobre uma sessão ssh, ou localmente dentro de uma sessão tmux, eu tenho que digitar a senha toda vez que eu tentar ssh para github.

Esta questão sugere que existe um problema similar com a tela, mas eu realmente não entender o problema bem o suficiente para corrigi-lo no tmux. Há também esta página que inclui uma solução bastante complicada, mas para zsh.

EDITAR :

Em resposta a @ Resposta do Mikel , de um terminal local eu recebo a seguinte saída:

[~]
$ echo $SSH_AUTH_SOCK
/tmp/launch-S4HBD6/Listeners
[~] 
$ ssh-add -l
2048 [my key fingerprint] /Users/richie/.ssh/id_rsa (RSA)
[~]
$ typeset -p SSH_AUTH_SOCK
declare -x SSH_AUTH_SOCK="/tmp/launch-S4HBD6/Listeners"

Considerando que ssh ou no tmux eu recebo:

[~]
$ echo $SSH_AUTH_SOCK

[~]
$ ssh-add -l
Could not open a connection to your authentication agent.
[~]
$ typeset -p SSH_AUTH_SOCK
bash: typeset: SSH_AUTH_SOCK: not found

echo $SSH_AGENT_PID não retorna nada, seja qual for o shell que eu executei.

    
por Rich 25.01.2011 / 23:25

6 respostas

4

Meu colega criou algumas funções básicas para ajudar a encontrar um agente ativo: link

Ele o usa principalmente para conectar sistemas (laptop a desktop, etc), mas eu o uso com mais frequência para sessões locais do tmux, nas quais você efetua logout / login do gerenciador de janelas (OS X para mim).

Uso

  1. Faça o download de ssh-find-agent.bash ( git clone git://github.com/wwalker/ssh-find-agent.git works).

  2. Adicione o seguinte a ~ / .bashrc:

    . /path/to/ssh-find-agent.bash
    
  3. Em seguida, você pode digitar o seguinte para definir SSH_AUTH_SOCK no seu shell atual:

    set_ssh_agent_socket
    
por 08.11.2011 / 00:24
8

Uma solução elegante, pegou do dagit.o :

Crie ~/.ssh/rc

#!/bin/bash
if [ -S "$SSH_AUTH_SOCK" ]; then
    ln -sf $SSH_AUTH_SOCK ~/.ssh/ssh_auth_sock
fi

Adicione a ~/.tmux.conf

set -g update-environment "DISPLAY SSH_ASKPASS SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY"
set-environment -g 'SSH_AUTH_SOCK' ~/.ssh/ssh_auth_sock
    
por 10.07.2013 / 13:54
6

No seu arquivo de configuração .tmux.conf , adicione esta linha:

set -g update-environment "SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID SSH_CONNECTION"

Isso faz com que estas variáveis de ambiente sejam copiadas do seu shell principal para quaisquer shells abertas dentro do tmux, o que permite que o ssh-agent funcione adequadamente dentro desses shells do tmux.

    
por 18.02.2012 / 09:13
3

Aconteceu-me que os painéis criados ao conectar via ssh do OS X começaram a perguntar minha frase-senha depois de um tempo de trabalho ok. Eu encontrei uma maneira de corrigir o roubo desta linha do link

eval $(tmux show-environment -t [YOUR-SESSION] | grep '^SSH_AUTH_SOCK')

Basta executá-lo no painel que está reclamando.

    
por 12.06.2014 / 17:47
2

Não tenho certeza se você está usando o bash ou outro shell, mas a configuração do tmux desse cara parece que funcionaria para o bash. Pessoalmente, estou usando o zsh com oh-my-zsh , e descobri que o ssh-agent começou a trabalhar no tmux depois que eu adicionei

zstyle :omz:plugins:ssh-agent agent-forwarding on

ao meu arquivo .zshrc e recarregou a configuração em minhas sessões zsh em execução. Eu também encontrei zsh- deste cara solução orientada , mas acabou sendo desnecessária para mim.

    
por 05.08.2011 / 20:39
1

O que faz:

echo $SSH_AUTH_SOCK
echo $SSH_AGENT_PID
ssh-add -l

imprimir?

Execute-o no seu terminal normal e, em seguida, execute-o dentro de sua sessão tmux . Eles devem imprimir a mesma coisa.

    
por 25.01.2011 / 23:54