Executa clientes X sobre o túnel ssh de vários saltos

7

Eu recentemente converti minha máquina de desenvolvimento para o Linux, e gostaria de poder fazer login a partir do trabalho, se necessário. Eu uso uma mistura de máquinas Linux e Windows, e já tenho vários gyrations de configuração ssh / putty / Xorg / Cygwin / etc para iniciar clientes X remotamente e exibir no servidor X local.

Meu problema é que minhas máquinas domésticas estão atrás de um firewall, e acessá-las requer o tunelamento através do firewall sobre o ssh. Quando estava executando o Windows, configurei o encaminhamento de porta ssh no firewall para fazer com que as conexões RDC fossem devolvidas à máquina correta, mas parece que o tunelamento X é mais complexo. Apenas ativar o encaminhamento do X11 na conexão ssh com o firewall parece funcionar apenas para os clientes X em execução nessa máquina, não para aqueles que inicio no segundo "salto".

Existe uma maneira de encaminhar / encapsular / qualquer conexão X11 através do firewall e para uma máquina remota que esteja a um salto extra?

Nota lateral:

Eu não sou particularmente casado com o X11, então se houver alguma outra opção que funcione melhor em vários saltos ssh, eu tomaria isso como uma resposta (especialmente se você puder me dizer por que é melhor). Eu só já tenho um servidor Xorg-ish em todas as minhas máquinas de trabalho. Os requisitos são basicamente:

  • Display-side-thingee (servidor X, cliente RDC, etc.) precisa ser executado no Linux e no Windows
  • O material do lado do aplicativo só precisa ser executado no Linux
  • Precisa funcionar em um "túnel" ssh de pelo menos dois dois saltos.
por KutuluMike 06.01.2014 / 17:31

1 resposta

10

Vamos supor que você tenha a seguinte topologia:

Trabalho - > Firewall (encaminhamento de porta) - > Servidor - > Alvo.

Se o seu problema é que você não está obtendo o X11 em Target porque está fazendo ssh -X Server e, em seguida, dentro de Server , está fazendo ssh -X Target , isso pode funcionar para você.

ssh permite que você encaminhe as portas também. Você pode usar uma conexão ssh para obter uma porta remota mapeada em uma porta local. Por exemplo, para acessar Target , pode-se:

Mapeie a porta 22 on Target para uma porta local 20000 usando a conexão Server (mantenha esta conexão aberta ou use a opção -Nf).

ssh -L20000:Target:22 Server

Em seguida, conecte-se a Target usando essa porta mapeada.

ssh -p 20000 -X localhost

    
por 06.01.2014 / 17:59