Tabela de conteúdos

Script para tunelamento para a rede do VeRLab

Este script abre um tunelamento em cascata para acessar computadores do VeRLab de fora da rede da UFMG. Esse tunelamento é interessante para acessar os repositórios do Subversion ou as páginas do Trac. Também pode ser utilizado por quem pretende navegar na home do verlab utilizando o nautilus de uma máquina fora da rede do Verlab.

Obs.: Lembre-se de substituir as duas instâncias de ”<nome do seu usuário …>” pelo seu login do DCC e do VeRLab, logo no início do script.

Forma de uso

Copie o código-fonte do script para um arquivo local no seu computador, digamos ~/ssh-verlab. Habilite a permissão de execução nesse arquivo local: chmod a+x ~/ssh-verlab.

Detalhes de funcionamento

Este script abre dois tunelamentos: um para o computador mica.dcc.ufmg.br (necessário para acessar qualquer outro computador do DCC); e o segundo, cascateado através do primeiro, para o serviço HTTPS do servidor davinci.verlab.dcc.ufmg.br, disponível localmente na porta 4465.

Com esse tunelamento, é possível acessar alguns os serviços do nosso servidor. Por exemplo:

O script pode ser facilmente alterado para habilitar o tunelamento do X (basta adicionar -X ao segundo comando ssh) ou para abrir tunelamentos para outras máquinas do VeRLab. No entanto, lembre-se de que são duas camadas de criptografia em ação, portanto a transferência de um grande volume de dados deve ocorrer de forma lenta.

Código-fonte do script

#!/bin/bash

# Ajustar o valor das seguintes variaveis:
USERNAME_VERLAB=<nome do seu usuario na rede do VERLAB>
USERNAME_DCC=<nome do usuario na rede do DCC>

# Opcoes de linha de comando
if [[ "$1" == "-d" ]]; then
    DELETEONLY=1
fi

# Apagando tuneis anteriores
PROCESSLIST=$(ps aux | \
    grep '[0-9] ssh -f -N -L 4465:localhost:443 ' | \
    awk '{ print $2 }')
PROCESSLIST=(${PROCESSLIST[@]} \
    "$(ps aux | \
    grep '[0-9] ssh -f -N -L 2265:davinci.verlab.dcc.ufmg.br:22 ' | \
    awk '{ print $2 }')")

if [[ -n ${PROCESSLIST[@]} ]]; then
    echo "Removendo conexoes antigas (${PROCESSLIST[@]})..."
    kill ${PROCESSLIST[@]}
fi

# Criando tuneis novos
if [[ -z "$DELETEONLY" ]]; then
    echo "Conectando..."

    ssh -f -N -L 2265:davinci.verlab.dcc.ufmg.br:22 \
        -o ExitOnForwardFailure=yes $USERNAME_DCC@mica.dcc.ufmg.br
    ssh -f -N -L 4465:localhost:443 -o Port=2265 \
        -o ExitOnForwardFailure=yes $USERNAME_VERLAB@localhost
fi

echo "Ok."

Navegando em arquivos e pastas com o Nautilus

Faça o tunelamento com o seguinte comando:

ssh -f <login>@login.dcc.ufmg.br -L 1337:munch.verlab:22 -N

Após realizado o tunelamento, abra o Nautilus e vá em: File→Connect to Server. Em Service Type, selecione SSH. Em server, escreva “localhost” (sem as aspas) e em port, 1337. Clique em connect para conectar. Será pedida uma senha, utilize a senha de acesso à rede do VeRLab.