Compartilhando túnel de porta SSH com rede local

2

Eu criei com sucesso um túnel SSH para o nosso servidor postgresql na nuvem em um servidor linux local, com este comando:

ssh -N -f -L 5431:localhost:xxxx mycloudserver.com

(onde xxxx é a porta remota)

Com este comando eu posso acessar o banco de dados remoto do PostgreSQL através da porta 5431, mas somente neste servidor linux.

Agora eu quero "compartilhar" essa conexão com outros PCs na rede para que eu possa conectar-me ao linux_server: 5431 com um driver ODBC e ler o banco de dados na nuvem, sem instalar nenhum software SSH nos clientes. A abertura da porta 5431 com o iptables não funcionou.

iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 192.168.128.5 --dport 5431 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -s 192.168.128.5 --sport 5431 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

Já tentei

 ssh -N -f -L 5431:0.0.0.0:xxxx mycloudserver.com

também. O túnel é construído com sucesso e funciona no servidor, mas não consigo "ver" a conexão dos clientes.

    
por Giovanni Formentini 21.09.2015 / 10:36

2 respostas

4

Você precisa modificar seu comando para especificar bind_address como:

ssh -N -f -L 0.0.0.0:5431:localhost:xxxx mycloudserver.com

Isso fará com que ele ouça em todas as interfaces. Para verificar, use:

netstat -lnp | grep 5431
    
por 21.09.2015 / 10:50
2

Esta é realmente a abordagem errada. Não use um túnel SSH. Em vez disso, configure o SSL no servidor de nuvem e faça conexões SSL diretas, usando restrições de endereço IP, se desejado.

Ou, se você precisar usar uma VPN, use uma designada para essa função em vez de colocar o ssh no trabalho.

SSH encapsula TCP sobre TCP, o que causa problemas com os algoritmos de controle de congestionamento, retransmissão e dimensionamento de janelas. É um ótimo utilitário para o trabalho ad-hoc, mas eu não sugeriria operações de produção de vários usuários para coisas que usam largura de banda significativa.

Se você realmente precisar , poderá usar o endereço de associação de * em seu -L , por exemplo

-L *:5431:localhost:xxxx

ou defina GatewayPorts yes no seu .ssh/config para esse host, ou por meio da opção de linha de comando -o , como:

-o GatewayPorts=yes
    
por 21.09.2015 / 10:50