Habilitando o acesso público à máquina de desenvolvimento

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 machines port to remote.

8088: specifies the port on remote server. Therefore, following command on remote server will give a result assuming that Im 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 were 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 socatbasta.

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.