Reverse SSH Tunnel do Windows para o Ubuntu para servir o SQL Server

1

Assim como a pergunta diz, no momento estou tentando estabelecer uma conexão SSH invertida de um servidor Windows atrás de um NAT para um VPS Ubuntu hospedado. Eu sou praticamente um iniciante no Linux e SSH.

Estou executando uma conexão do PLink a partir da máquina do Windows com o seguinte comando:

plink.exe -ssh -R 3005:localhost:1433 [email protected] -pw password

No VPS, adicionei as seguintes linhas ao sshd_config:

Match User deploy  
GatewayPorts yes

e SSH reiniciado. Netstat -an | O grep 3005 traz de volta a seguinte resposta:

tcp        0      0 0.0.0.0:3005            0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:3005          127.0.0.1:47578         ESTABLISHED
tcp6       0      0 :::3005                 :::*                    LISTEN
tcp6       0      0 127.0.0.1:47578         127.0.0.1:3005          ESTABLISHED

Para mim, isso parece certo, mas isso é puramente de mim tentando decifrar a informação dada. Mas o meu webapp ruby (Running on Padrino, Mizuno e Nginx) se recusa a se conectar ao servidor SQL nesta porta no host local. Estou faltando alguma coisa?

Espero que isso seja informação suficiente para continuar. Se houver mais alguma coisa, tentarei fornecer isso.

    
por R Kelly 14.01.2014 / 17:45

3 respostas

0

A partir das informações que você fornece (principalmente a saída de netstat ), parece que o encaminhamento de porta está correto.

Você pode ter certeza disso tentando abrir uma conexão com essa porta a partir da máquina Ubuntu. Tente algo como:

telnet localhost 3005

Você deve então cair em um desses 3 casos:

  1. Você recebe uma mensagem dizendo que telnet: Unable to connect to remote host: Connection refused significa que o encaminhamento de porta não está funcionando, a porta 3005 ainda está fechada no servidor Ubuntu.

  2. Você recebe mensagens com connect_to localhost port 1433: failed. e Connected to localhost. , mas fechando diretamente com Connection closed by foreign host. significa que o encaminhamento de porta está ok (primeiro conecte), mas a porta de escuta no seu servidor SQL não está aceitando a conexão conectar, mesmo que a mensagem de erro venha primeiro).

  3. Você recebe um convite vindo do SQL Server e talvez a conexão seja encerrada. Se este for o caso, isso significa que o encaminhamento de porta está funcionando bem. Mas o problema está no seu servidor SQL ou na maneira como seu aplicativo se conecta a ele.

Eu acho que você deveria estar em 2. ou 3.

    
por 16.01.2014 / 13:38
0

túnel reverso? você quer dizer encaminhamento de porta remota? Eu acho que você está tentando encaminhar uma porta local (onde o servidor SQL está sendo executado) para o seu servidor Ubuntu remoto. Se sim, então você precisa fazer um encaminhamento de porta local (-L em vez de -R)

    
por 14.01.2014 / 18:49
0

Você não pode fazer isso porque o cliente está por trás de um roteador NAT. Se não houvesse NAT, você poderia usar:

plink -ssh -R 3005:client-ip-addr:1433 deploy@ubuntu-ip-addr -pw passwd

infelizmente o servidor ubuntu não consegue acessar o client-ip-addr. Talvez um encaminhamento de porta para o servidor sql host: port poderia ajudar, mas eu acho que é exatamente o tipo de coisas que você quer evitar.

    
por 15.01.2014 / 19:34