Clique aqui para ver o screencast e a postagem original
abra o túnel ssh da sua máquina local
Para rodar o aplicativo Rails em desenvolvimento, você pode fazer isso, pois o rails s roda na porta 3000.
localhost$ ssh -R 8088:localhost:3000 remote_server -N &
Isso cria um túnel que liga a porta TCP 8088 remota à porta 3000 TCP local.
-R flag is for remote binding which tell the remote server to send TCP traffic on port 8088 to my machine. This is basically reverse of -L which binds the local machine’s port to remote.
8088: specifies the port on remote server. Therefore, following command on remote server will give a result assuming that I’m running a Rails app on port 3000.
remote_server$ curl localhost:8088
localhost é o host, obviamente minha máquina local onde o tráfego será vinculado.
:3000 is the local port you want to bind the traffic to.
-N tells ssh to not execute a remote command. Should always use this if we’re just tunneling.
& makes it run in background.
instale o socat se não estiver instalado no servidor remoto
Esta é a definição de socat.
Socat is a command line based utility that establishes two bidirectional byte streams and transfers data
entre eles
Para o Ubuntu, remote_server$ sudo apt-get install socat
basta.
execute o socat para retransmitir o tráfego público
No servidor remoto, exponha uma porta pública e, em seguida, roteie o tráfego para a porta local que está ligada à minha máquina local.
remote_server$ socat TCP-LISTEN:8090,fork,reuseaddr TCP-CONNECT:127.0.0.1:8088 &
TCP-LISTEN:8090,fork,reuseaddr tells socat to listen TCP on port 8090, creating a server at that port. The options are self-explanatory.
TCP-CONNECT:127.0.0.1:8088 tells socat to connect TCP to localhost at port 8088 which is bound to my machine.