O encaminhamento de porta ssh de etapa única não funciona, mas funciona apenas quando o encaminhamento de porta ssh é executado separadamente no servidor de salto remoto e no host local remoto?

0

Considere três máquinas neste cenário:

  1. Machine_A: meu MacBook doméstico local
  2. Machine_B: algum servidor eu posso ssh diretamente sem vpn da Máquina A. (remote jump-server)
  3. Machine_C: Máquina protegida por firewall somente acessível por / através de Machine_B. (localhost protegido remotamente)
Por fim, quero iniciar o VNCserver no Machine_C e visualizá-lo no Machine_A.

Eu descobri como executar o VNCserver no Machine_C executando por exemplo: vncserver :4 . A partir de agora, o vncviewer funciona perfeitamente, mas eu tenho que fazer o processo DOIS PASSOS para habilitar o encaminhamento de portas de modo que o vncviewer funcione com sucesso :

  1. No meu terminal Machine_A, eu corro: ssh -L 5904:localhost:5904 myusername@Machine_B
  2. da etapa 1, agora estou ssh'ed na Máquina_B. Agora, no Machine_B I executar: ssh-L 5904:localhost:5904 Machine_C

Uma vez que estes DOIS PASSOS estão funcionando bem, o meu vncviewer roda bem mostrando a vncsession do Machine_C digitando localhost:4 no vncviewer.

No entanto, tenho que seguir o processo DOIS PASSOS. Lembro-me do processo de comando ONE mostrado abaixo

ssh -L 5904:Machine_C:5904 myusername@Machine_B

deve fazer o trabalho, mas não está funcionando para mim e mostra essa resposta depurada:

debug1: Connection to port 5904 forwarding to Machine_C port 5904 requested.
debug2: fd 12 setting TCP_NODELAY
debug1: channel 3: new [direct-tcpip]
channel 3: open failed: connect failed: Connection refused
debug2: channel 3: zombie
debug2: channel 3: garbage collecting
debug1: channel 3: free: direct-tcpip: listening port 5904 for Machine_C port 5904, connect from ::1 port 61702 to ::1 port 5904, nchannels 4

Para referência:

Meu arquivo ~ / .ssh / config em Machine_B e Machine_C:

Host *
     ForwardAgent yes
     ForwardX11 yes
     ForwardX11Trusted yes
     RhostsAuthentication yes
     RhostsRSAAuthentication yes
     RSAAuthentication yes
     TISAuthentication no
     PasswordAuthentication yes
     FallBackToRsh yes
     UseRsh no
     BatchMode no
     StrictHostKeyChecking no
     IdentityFile ~/.ssh/identity
     Port 22
     EscapeChar ~

Minha configuração de arquivo ~ / .vnc / xstartup em Machine_B e Machine_C:

#!/bin/sh


# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc


[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
/usr/bin/gnome-session --session=2d-gnome &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm &
#startx &i
x-window-manager &

Alguma ajuda para corrigir porque meu encaminhamento de porta onestep através de ssh -L 5904:Machine_C:5904 myusername@Machine_B não está funcionando? Estou faltando alguma coisa no meu .ssh/config ?

    
por dr3patel 08.04.2018 / 07:24

1 resposta

1

Com ssh > = 7.3 (necessário somente no Computador_A), essas duas etapas podem ser feitas sob o capô com a opção -J / ProxyJump , simplificando o que você precisa fazer (aumentando a segurança disso exemplo específico):

ssh -L 5904:localhost:5904 -J myusername@Machine_B myusername@Machine_C

Desta forma, além da simplicidade, o acesso VNC também não é feito no Machine_B como você fazia, então outros usuários do Machine_B não podem usar o seu VNC.

Para a explicação, esta seria a maneira tradicional (segura) de fazer o mesmo:

ssh -L 2222:Machine_C:22 myusername@Machine_B

em outro terminal ainda em Machine_A:

ssh -L 5904:localhost:5904 myusername@localhost:2222

Note que nenhum ponto de entrada de túnel é disponibilizado em Machine_B. ProxyJump ( -J ) faz aproximadamente o mesmo sob o capô, exceto que ele usa canos entre os dois processos ssh em vez da porta 2222.

Agora, por ser capaz de não enviar um ssh para o Machine_C, isso provavelmente parece ser um problema de acesso / configuração do VNC e não um problema do ssh. Tem certeza de que o VNC não está restrito a localhost? Quer por configuração, quer por um firewall local?

    
por 08.04.2018 / 11:31