explicação sobre tunelamento ssh

8

Eu tenho uma pergunta sobre o tunelamento ssh. Eu li este artigo

Gostaria de fazer o encaminhamento do X funcionar, executar alguns aplicativos do X em casa e exibi-los em um sistema remoto:

 ssh -X -R 5555:localhost:22 [email protected] -N

No controle remoto:

 ssh -X -p 5555 [email protected]

Depois em casa:

 //configure sshd to listen on 5555
 ssh [email protected]
 //here run some app

Deveria funcionar?

wawa235
fonte
Por favor, tente em vez de perguntar se funcionaria.
Wutaz
Sim, é sempre melhor tentar as coisas e, se não funcionar, pergunte o porquê.
slm
parece que você está fazendo isso ao contrário .. o "normal" é executar no controle remoto e exibi-lo localmente. se você deseja exibir no controle remoto, conte-nos sobre sua rede, pode ser simples e nem precisa de ssh.
22615 Skaperen

Respostas:

9

Eu desenhei alguns esboços

A máquina onde o comando ssh tunnel é digitado é chamado »seu host« .

túnel ssh a partir do local


túnel ssh a partir do controle remoto

Introdução

  1. local: -L Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.

    ssh -L sourcePort:forwardToHost:onPort connectToHostsignifica: conectar com ssh ae connectToHostencaminhar todas as tentativas de conexão para o local sourcePort a porta onPortna máquina chamada forwardToHost, que pode ser acessada a partir da connectToHostmáquina.

  2. controlo remoto: -R Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side.

    ssh -R sourcePort:forwardToHost:onPort connectToHostsignifica: conectar-se com ssh connectToHoste encaminhar todas as tentativas de conexão do remoto sourcePort para a porta onPortna máquina chamada forwardToHost, que pode ser acessada a partir da sua máquina local.

Seu exemplo

Bem, se você gostaria apenas de fazer o encaminhamento do X funcionar, ou seja, executar alguns aplicativos do X no computador em casa e exibi-los em um sistema remoto (vamos chamá-lo de computador do trabalho, porque pode estar no seu local de trabalho), então você possivelmente não precisa de um túnel ssh.

Inicie aplicativos X sem túnel

Você pode simplesmente ssh do computador do trabalho para o seu computador doméstico? Nesse caso, quando você está sentado no computador do trabalho e deseja iniciar um aplicativo X que é executado no seu computador doméstico, mas é exibido no seu computador do trabalho , você deve digitar (no computador do trabalho):

ssh -X homeuser @ homecomputer firefox

Isso iniciará o Firefox no seu computador doméstico e o exibirá na máquina em que você digitou este comando, por exemplo, no seu computador de trabalho.

Computador oculto precisa de túnel

Esta é a imagem número 3 dos meus esboços. Muitas vezes, o computador doméstico não pode ser acessado diretamente da Internet, porque está protegido por um firewall ou oculto pelo NAT (de um roteador). Então você pode usar um túnel.

No seu computador doméstico azul ( yourhost), você digita:

ssh -R 5555:localhost:22 remoteuser@remotehost

onde 5555fica a porta verde e 22a porta rosa na imagem.

Se você está no trabalho, na remotehost, e se conecta à porta verde 5555, sua conexão é encapsulada / encaminhada para a porta rosa do computador doméstico localhost(ou seja, o próprio computador azul em casa). Agora você precisa digitar no seu computador de trabalho:

ssh -X -p 5555 homeuser@localhost firefox

que iniciará o Firefox no seu computador doméstico ( yourhost) e o exibirá na máquina em que você digitou este comando, por exemplo, no seu computador comercial ( remotehost).

erik
fonte
1

Você precisa especificar a exibição remota que deseja encaminhar. No controle remoto:

DISPLAY=:0 ssh -X -p 5555 user@localhost # not sure why you used 192.168.1.2

Para encaminhar a :0exibição.

Em seguida, nesse shell (agora em execução na sua máquina doméstica), execute:

echo "$DISPLAY"

para descobrir qual é a tela encaminhada. Isso será algo como localhost:10, o que significa que você precisa fazer uma conexão TCP na porta 6010 para conectar-se ao monitor :0na máquina remota ( :0ou seja, conectar-se a algum soquete de domínio Unix em algo como /tmp/.X11-unix)

Em seguida, para que um aplicativo em sua máquina seja exibido na tela do servidor remoto, basta apenas dizer-lhes para usar localhost:10:

DISPLAY=localhost:10 xlogo

por exemplo.

Observe que isso é um túnel sobre um túnel.

Stéphane Chazelas
fonte