Como posso encaminhar uma chave ssh já encaminhada para o tmux?

14

Estou conectando através do SSH de uma máquina onde minhas chaves estão armazenadas, encaminhando para uma segunda máquina e, em seguida, tento usar as chaves de dentro do tmux. Eu pareço "perder" o encaminhamento ao entrar no tmux. Como posso "encaminhar novamente" para que eu possa usar minhas chaves dentro do tmux?

$ ssh [server] -o ForwardAgent=yes
$ git pull       # Succeeds.
$ /bin/bash
$ git pull       # Still succeeds, despite new shell.
$ exit
$ tmux attach
$ git pull       # Permission denied (publickey)
    
por user50849 10.02.2014 / 15:18

3 respostas

11

Se você está anexando uma sessão tmux já existente, o shell não está herdando as variáveis de ambiente do seu shell de login. Particularmente, ele não herdará as variáveis de ambiente do agente ssh.

Tente esta correção :

  1. Crie este script e coloque-o em $ HOME / .ssh / saveagent

    #!/bin/sh
    SSHVARS="SSH_CLIENT SSH_TTY SSH_AUTH_SOCK SSH_CONNECTION DISPLAY"
    
    for var in ${SSHVARS} ; do
      echo "export $var=\"$(eval echo '$'$var)\""
    done 1>$HOME/.ssh/latestagent
    
  2. Adicione ao seu script de inicialização do shell. Por exemplo, se você usar o bash:

    echo '. ~/.ssh/saveagent' >> ~/.bash_login
    
  3. Depois de anexar o tmux, execute . $HOME/.ssh/latestagent

Veja também Como posso executar um script imediatamente após a conexão via SSH? e Anexe à sessão do tmux e execute um comando

    
por 10.02.2014 / 19:16
0

A menos que você deseje criar um script contendo todas as variáveis que você precisa em cada shell gerado em qualquer nova shell gerada pelas mesmas sessões de tmux server, você provavelmente desejará dizer tmux para colocar as variáveis em a sessão ou ambientes globais com o comando set-environment . Por exemplo, assim (para bash):

for var in DISPLAY SSH_AUTH_SOCK ...; do
    tmux setenv "$var" "${!var}"
done

lembre-se de adicionar o -g sinalizador se desejar também em outras sessões e usar -t <session> se estiver sendo executado fora de tmux .

    
por 09.10.2014 / 12:43
0

Depois de ler as outras respostas aqui, decidi apenas copiar meu par de chaves público / privado para o servidor remoto, para que eu não precisasse mais me preocupar com o encaminhamento de agentes.

    
por 26.11.2015 / 03:04

Tags