Porta de túnel com segurança através do host intermediário

21

Estou procurando encaminhar uma porta para o VNC de volta para minha casa aqui. Eu tenho que pular sobre um único host para depois ir para a minha máquina de trabalho real.

  • sittinghere será minha máquina doméstica local
  • hopper será pelo salto intermediário que preciso fazer
  • overthere será a máquina de trabalho remota

Eu posso fazer isso com o SSH na minha máquina de trabalho:

ssh -t hopper "ssh -t overthere"

Gostaria de usar o encaminhamento de porta para encaminhar a porta remota 5900 em overthere para a porta local 5900 em sittinghere . No entanto, eu preferiria poder fazê-lo sem vincular a uma porta abertamente em hopper , pois qualquer pessoa nessa máquina seria capaz de se conectar à minha conexão VNC.

Existe alguma maneira de encaminhar essa porta para minha máquina local com segurança, sem que ninguém consiga acessá-la em hopper ?

    
por Naftuli Kay 05.07.2014 / 01:06

5 respostas

17

Acabei usando alguns SSH ~/.ssh/config hacks para fazer isso acontecer:

Host hopper
    User naftuli
    ForwardAgent yes

Host overthere
    User naftuli
    ForwardAgent yes
    ProxyCommand ssh -q hopper nc overthere 22

O que acontece é que, quando tento conectar-me a ssh overthere de sittinghere , ele se conecta a hopper e, em seguida, faz proxy da conexão SSH à porta 22 em overthere (ex .: SSH em overthere ) .

Isso tem alguns efeitos colaterais incríveis:

ssh -L 5900:localhost:5900 overthere "x11vnc -display :0 -localhost"

Tudo funciona muito bem e, até onde eu sei, o 5900 não é aberto em hopper , apenas encaminhado diretamente de overthere para sittinghere .

    
por 08.07.2014 / 21:16
14

Usando a capacidade nativa do SSH para encaminhar portas. De sittinghere execute:

 ssh -v -N -L 5900:overthere:5900 user@hopper

Aponte seu cliente VNC para localhost:5900 e o tráfego será tunelado para overthere:5900 através da conexão SSH estabelecida em hopper

    
por 05.07.2014 / 05:34
1

Você pode encaminhar uma porta da porta SSH sittinghere para overthere até hopper . Em seguida, você pode usar essa porta para alcançar overthere diretamente de sittinghere . Nesta segunda sessão SSH você pode encaminhar o VNC ou qualquer outra porta que você goste, enquanto hopper vê apenas uma sessão SSH criptografada.

Primeira sessão SSH:

ssh -f -N -L 7022:overthere:22 hopper

Agora diga ao cliente SSH como ele pode alcançar overthere adicionando essa configuração a ~/.ssh/config on sittinghere

Host overthere
    HostName hopper
    Port 7022
    HostKeyAlias overthere

Segunda sessão SSH:

ssh -f -N -L 5900:localhost:5900 overthere

Ou apenas uma sessão SSH interativa regular sem o túnel da porta VNC:

ssh overthere

Se não quiser incomodar a adição de linhas a ~/.ssh/config , ainda é possível dizer como se conectar a overthere na linha de comando:

ssh -p 7022 hopper

... mas sem o HostKeyAlias , o SSH não verificará corretamente a impressão digital da overthere .

Todas as linhas de comando devem ser executadas a partir de sittinghere .

Por acaso, acho que você provavelmente não precisa usar a opção ssh -t .

    
por 05.07.2014 / 03:46
1

Primeiro, conecte o funil ao fazer o túnel entre o worker e o pc em casa.

ssh -f ismail@hopper -L 2222:overthere:22 -N

faça o ssh ro overthere com o túnel vnc

ssh -p 2222 -f ismail@localhost -L 5900:localhost:5900

Agora você pode se conectar com o vnc. By the way alterar a configuração do vnc para ouvir localhost

    
por 05.07.2014 / 07:00
0

Se você estiver usando o cliente VNC vncviewer a partir da linha de comando, você pode usar a chave -via para enviar um túnel através de user@host antes de se conectar ao servidor VNC de outro host.

Exemplo

$ vncviewer -via user@host localhost:0

Você também pode usar vinagre para se conectar por meio de um túnel SSH, como na interface gráfica. Para fazer isso, configure sua conexão de maneira semelhante a essa através da caixa de diálogo de conexão em vinagre :

Oqueresultaránaconexão,encapsuladapelohostdotúnelSSH.

Referências

por 05.07.2014 / 04:07