tmux: Não é possível o SSH de dentro do tmux, mesmo que eu tenha o reencaminhamento de agentes (ssh -A) em [duplicado]

5

Então eu tenho chaves para alguns servidores armazenados localmente no meu MacBook, mas eu trabalho dentro de uma Máquina Virtual por um tempo considerável, então eu SSH para a VM com ssh -A . Isso me permite enviar SSH para servidores de dentro da VM.

Recentemente, comecei a usar o tmux para gerenciar melhor minhas janelas de terminal, mas descobri um problema estranho. Enquanto a janela inicial que eu abro no tmux pode usar o SSH, qualquer janela aberta adicional não pode. ssh-add mostra que, dentro dessa janela do tmux, nenhuma conexão pode ser aberta para meu agente SSH. Alguma idéia de como fazer o tmux funcionar bem com o encaminhamento de agentes SSH?

    
por d11wtq 13.09.2011 / 12:24

2 respostas

7

Quando você abre uma segunda conexão com sua VM, ela usará uma variável de ambiente SSH_AUTH_SOCK diferente, mas o tmux e os processos sob ela saberão apenas o valor antigo.

Quando você anexa a uma sessão existente, o tmux pode informar ao processo mestre para atualizar algumas variáveis de ambiente. SSH_AUTH_SOCK já está na lista, mas você pode adicionar os personalizados por ~/.tmux.conf :

set -ga update-environment " FOO BAR"

No entanto, isto só afetará as janelas do new tmux abertas pelo prefixo c . É impossível para o tmux atualizar o ambiente de processos já em execução (shells, etc).

Com o OpenSSH você pode reutilizar a conexão SSH mesmo para várias sessões, mantendo SSH_AUTH_SOCK .

  1. Iniciar uma conexão principal:

    ssh -AfNMS ~/.ssh/myvmhostname.socket myvmhostname
    
  2. Abra uma sessão sobre ele:

    ssh -S ~/.ssh/myvmhostname.socket myvmhostname
    

(Para automação de -M e -S , consulte ControlMaster / ControlPath na página de manual ssh_config .)

    
por 13.09.2011 / 12:52
3

Oi, eu sei que esta é uma pergunta antiga Mas eu encontrei esta página basicamente adicionando isto ao seu arquivo .bashrc no seu VM. Basicamente, ele vincula seu soquete ssh a um destino previsível. TBH isso pode ser um problema de segurança, mas eu não acho que deveria ser um grande problema se você é o administrador da máquina (eu não sou especialista em segurança, no entanto):

(do blog de marcas)

No seu arquivo .bashrc ou .zshrc, adicione o seguinte:

# Predictable SSH authentication socket location.
SOCK="/tmp/ssh-agent-$USER-screen"
if test $SSH_AUTH_SOCK && [ $SSH_AUTH_SOCK != $SOCK ]
then
    ln -sf $SSH_AUTH_SOCK $SOCK
    export SSH_AUTH_SOCK=$SOCK
fi
    
por 02.05.2012 / 10:36