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
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.
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