Pular para o conteúdo

SSH: Túneis

Os túneis SSH são uma ferramenta poderosa para comunicação segura, para contornar restrições de rede e para dar acesso remoto a recursos locais.

O redirecionamento de porta local permite redirecionar uma porta da sua máquina local para um endereço e uma porta remotos. Imagine que você tem uma aplicação web rodando em um servidor remoto no endereço 127.0.0.1:8000. Para acessar essa aplicação web da sua máquina local, você pode usar o redirecionamento de portas do SSH:

Terminal window
ssh -L 8080:127.0.0.1:8000 example.com

Agora, no navegador da máquina local, acesse http://localhost:8080 e você deve receber os dados (ou ver a página web) do seu servidor remoto.

  • 8080 - o número da porta no computador local com o cliente ssh
  • 127.0.0.1:8000 - o endereço IP e o número da porta no computador remoto
  • -fNT - opções adicionais para executar o cliente SSH em segundo plano

O redirecionamento reverso de porta permite redirecionar uma porta do servidor remoto para um serviço local. Por exemplo, para redirecionar a porta remota 9090 para a porta 3000 da sua máquina local:

Terminal window
ssh -R 9090:localhost:3000 example.com

Agora todas as requisições feitas no servidor remoto à porta 9090 serão redirecionadas para a porta 3000 na sua máquina local.

O ProxyJump é outro mecanismo útil. Ele permite conectar a um servidor remoto através de um servidor SSH intermediário, também conhecido como “jump host”.

Para conectar ao server2 através do server1:

Terminal window
ssh -J user@server1 server2

Como alternativa, você pode ativá-lo de forma permanente para um host específico no arquivo de configuração do SSH ~/.ssh/config:

Host server2
ProxyJump user@server1

Agora basta usar:

Terminal window
ssh server2

Cenário: você tem um banco de dados MySQL rodando em um servidor remoto e quer acessá-lo da sua máquina local. Crie um túnel SSH para redirecionar a porta remota do MySQL para a sua máquina local:

Terminal window
ssh -L 3306:localhost:3306 example.com

Depois de executar esse comando, você pode conectar ao banco de dados MySQL remoto usando um cliente MySQL local, assim:

Terminal window
mysql -h 127.0.0.1 -P 3306 -u db_user -p

Cenário: você precisa acessar um banco de dados remoto na porta 5432 e uma aplicação web na porta 8080 do servidor remoto.

Terminal window
ssh -L 8080:localhost:8080 -L 5432:localhost:5432 example.com

Depois de executar esse comando, você pode acessar a aplicação web remota em http://localhost:8080 e o banco de dados remoto em localhost:5432.

Se você monta túneis SSH com frequência, pode configurar o cliente SSH para simplificar o processo usando o arquivo de configuração ~/.ssh/config.

Host example.com
LocalForward 5432 localhost:5432
LocalForward 8080 localhost:8080

Essa configuração permite criar túneis SSH rapidamente com opções predefinidas, usando apenas os apelidos.

Cenário: você tem uma câmera IP em uma rede privada que transmite vídeo por RTSP em rtsp://192.168.1.10:554/stream1. Você precisa acessar esse stream RTSP da sua máquina local.

Terminal window
ssh -L 8554:192.168.1.10:554 example.com

Depois de executar esse comando, você pode acessar o stream RTSP da sua máquina local usando um cliente RTSP (por exemplo, o VLC media player), conectando-se a rtsp://localhost:8554/stream1.

  1. Abra o VLC Media Player
  2. Vá em “Media” e clique em “Open Network Stream”.
  3. Digite a URL rtsp://localhost:8554/stream1.
  4. Clique em “Play”.

O VLC vai conectar ao stream RTSP através do túnel SSH, permitindo que você veja a imagem da câmera como se estivesse na mesma rede privada dela.