Suponha que haja algum servidor rodando em remotehost.some.where:4444. Eu tenho um software que insiste em se conectar ao localhost:5555. Eu posso encaminhar isso ssh
com
ssh -L 5555:remotehost.some.where:4444 myuser@localhost
Mas isso requer uma conexão ssh desnecessária com localhost, que a adição de -N
não impediria. Como posso fazer esse encaminhamento de porta sem o login, possivelmente com outra ferramenta?
A solução mais fácil é executar algum tipo de proxy TCP. Você pode usar
socat
, por exemplo:Enquanto isso estiver em execução, as conexões com a porta
5555
em seu host local serão encaminhadas para a porta4444
emremotehost.some.where
.O comando que estou usando aqui só escuta no
127.0.0.1
. Se você realmente deseja aceitar conexões de outros hosts em port5555
, você pode descartar abind=127.0.0.1
opção.Existem algumas maneiras de fazer isso.
1) Se você for GNU/Linux, use apenas
iptables
para fazê-lo;2) Se você realmente quer usar SSH, gere um par de chaves RSA, copie-o para o seu arquivo ~./ssh/authorized_keys e repita seu comando, adicionando a
-N
opção.3) Se você estiver usando uma distribuição Debian ou baseada em Debian, você pode usar
redir
.4) Você pode fazer isso também usando
socat
, assim:socat TCP4-LISTEN:80,fork TCP4:www.yourdomain.org:8080
Espero que ajude.