Usando tunelamento SSH reverso em uma etapa em vez de duas etapas (com -X)

3

Suponha que temos três hosts:

  • miki - meu computador por trás de um NAT
  • vps0 - meu VPS
  • mum - computador da minha mãe, atrás de um NAT diferente.

A tarefa é conectar do meu computador à minha mãe e manter o encaminhamento do X11. Até agora eu usei tunelamento reverso como abaixo:

# on mum's computer (at crontab on reboot):
autossh -fN -M 3986 -R 1993:localhost:22 login@vps0

# when I want to connect to mum's computer
miki$ ssh login@vps0
vps0$ ssh localhost -p 1993

Apresentado acima da abordagem, tem uma desvantagem de não poder usar o encaminhamento do X11 (parâmetro -X) - não consigo abrir janelas remotamente.

Eu estou querendo saber se é possível conectar-se diretamente ao computador da minha mãe e manter o encaminhamento do X11.

PS. Eu semei respostas no tópico: SSH tunnel through middleman server - como conectar em um passo (usando par de chaves)? . Infelizmente, usar essas soluções faz com que o encaminhamento do X11 não funcione.

    
por Greg Rynkowski 18.08.2015 / 17:35

2 respostas

4

Por que essa solução com ProxyCommand não funciona para o encaminhamento do X11? Acho que você pode acessar diretamente o computador da mãe com o encaminhamento do X11 usando a seguinte configuração.

Host mum
ProxyCommand ssh -q -W localhost:1993 login@vps0
ForwardX11 yes
    
por 18.08.2015 / 17:55
2

Se você entender o que está acontecendo no encaminhamento do X11, você saberá que não é tão simples como descrito na resposta do @yaegashi. O encaminhamento X11 está criando outra camada sob o ssh e não pode ser encadeado como fluxos de dados de terminal normais. Mas você pode fazer isso usando o encaminhamento de porta:

Com base nesta postagem no blog , que é tão difícil de codificar script de shell. Eu estava tentando fazer o mesmo usando ssh_config , mas sem sucesso algum. Você só precisa adicionar complexidade do túnel reverso ao script original

sshx () {
    # create the tunnel from vps0 to your host
    sudo ssh -Nn vps0 -L 3991:vps0:1993 &
    sleep 1s
    PID=$!
    # connect to localhost on forwrded port
    ssh localhost -XYC -p3991
    sudo kill $PID
}

Espero que funcione para você

    
por 18.08.2015 / 18:47